如何使用正则表达式在查询的时候就将字段中的结果进行删除?

EZuoE 2018-12-26 09:48:31
数据库中的A字段内的值大量是这种:84239556\955\300

我想在查询的时候就通过sql正则表达式将斜杠后的内容替换掉,不显示,可以实现吗?如何能做到?
...全文
151 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
EZuoE 2018-12-26
  • 打赏
  • 举报
回复
最后的结果我只想保留A那种情况
吉普赛的歌 2018-12-26
  • 打赏
  • 举报
回复
最后的结果是什么样的? 84239556\955\300 ==》 A. 84239556 B. 842395565500 ? 或其它?
EZuoE 2018-12-26
  • 打赏
  • 举报
回复
感谢版主的回复,测试成功啦,是我想要的结果。 对不起楓VS痕一下,因为之前没说清楚sql的版本,非常抱歉。
EZuoE 2018-12-26
  • 打赏
  • 举报
回复
感谢回答,在mysql中测试好用,我再去mssql中按这个思路试下。
吉普赛的歌 2018-12-26
  • 打赏
  • 举报
回复
USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL DROP TABLE t
GO
CREATE TABLE t(
	id INT IDENTITY(1,1) PRIMARY KEY,
	info NVARCHAR(30)	
)
GO
SET NOCOUNT ON
INSERT INTO t VALUES ('84239556\955\300');
INSERT INTO t VALUES ('8423952\9');
INSERT INTO t VALUES ('12345');

SELECT
    *
	,CASE WHEN CHARINDEX('\',info)>0 THEN LEFT(info,CHARINDEX('\',info)-1) 
		 ELSE info 
	END AS result 
FROM t;
/*
id          info                           result
----------- ------------------------------ ------------------------------
1           84239556\955\300               84239556
2           8423952\9                      8423952
3           12345                          12345
 */
EZuoE 2018-12-26
  • 打赏
  • 举报
回复
引用 3 楼 楓VS痕 的回复:
这是表结构;

select IF((LOCATE("\\", path) - 1) >= 0, SUBSTR(path, 1, LOCATE("\\", path) - 1), path) path from table_test 
感谢回答,在
楓VS痕 2018-12-26
  • 打赏
  • 举报
回复


这是表结构;


select IF((LOCATE("\\", path) - 1) >= 0, SUBSTR(path, 1, LOCATE("\\", path) - 1), path) path from table_test

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧