从字符串中删除特殊字符+

时间:2018-07-12 10:18:41

标签: sql sql-server tsql

请您协助我,我正在尝试删除(更新记录)字符串中的第一个字符,在本例中为"+"符号

MyTable

+12334
+23343
+23443
+23432

结果

12334
23343
23443
23432

下面的方法会起作用吗?

update MyTable
set [F Number] = Right([F Number],LEN([F Number]) - 1)

4 个答案:

答案 0 :(得分:1)

尝试一下:

UPDATE MyTable
SET [F Number] = 
CASE
    WHEN CHARINDEX('+', [F Number]) = 1
    THEN SUBSTRING([F Number], 2, LEN([F Number]))
    ELSE [F Number]
END

通过这种方式,只有在第一个字符不删除时才删除+

我的案例研究:

CREATE TABLE #APP (name varchar(50))
insert into #app values ('+aaa'), ('aaa+aaa'), ('bbb')

select CHARINDEX('+', name), SUBSTRING(name, 2, LEN(name)), * from #app

UPDATE #app
SET name = 
CASE
   WHEN CHARINDEX('+', name) = 1
   THEN SUBSTRING(name, 2, LEN(name))
   ELSE name
END

select * from #app

您也可以看到here

答案 1 :(得分:0)

只需将其转换为INT并将其转换回即可。

UPDATE MyTable
SET [F Number] = CAST(CAST([F Number] AS INT) AS NVARCHAR(50))

如果[F数字]包含非数字文本,请添加WHERE支票。

WHERE ISNUMERIC([F Number]) = 1

答案 2 :(得分:0)

这可以帮助您:

UPDATE MyTable
SET MyColumn = RIGHT(MyColumn, LEN(MyColumn) - 1)

这对我来说很正常。

答案 3 :(得分:0)

SQL Server具有STUFF()函数,这使它非常简单:

update MyTable
    set [F Number] = stuff([F Number], 1, 1, '');

我倾向于添加一个where子句,以确保仅更改要更改的值:

update MyTable
    set [F Number] = stuff([F Number], 1, 1, '')
    where [F Number] like '+%';