从字符后面的字符串SQL中删除特殊字符

时间:2019-08-16 13:27:15

标签: sql-server sql-server-2008 special-characters

我当前的数据集的值是acceptablevalue_5cjunk数据。我要使用SQL删除的数据是以_5c开头的字符串。

我尝试使用带有类似功能的replace语句不起作用。

IF OBJECT_ID('mytable') IS NOT NULL drop table mytable
CREATE TABLE mytable
    ([mycol] varchar(50))
;

INSERT INTO mytable
    ([mycol])
VALUES
    ('97W'),
    ('125_5c0a9abac73d4'),
    ('121_5c0a9abac73d4'),
    ('121_5c0a9abac73d4'),
    ('123_5c0a9abac73d4'),
    ('112H'),
    ('111H')
;


SELECT REPLACE([mycol],like'_5c%','')
from mytable

我想看的是:

97W
125
121
121
123
112H
111H

1 个答案:

答案 0 :(得分:1)

在匹配特定模式后没有替换功能,但是,由于您只想删除字符,因此完全不需要替换,您可以使用LEFT来去除字符模式(使用CHARINDEX查找模式),并带有一个case表达式,以确保您考虑了找不到模式的情况:

SELECT CASE WHEN CHARINDEX('_5c', MyCol) = 0 THEN MyCol 
            ELSE LEFT(MyCol, CHARINDEX('_5c', MyCol) - 1) 
        END
FROM mytable;