请您协助我,我正在尝试删除(更新记录)字符串中的第一个字符,在本例中为"+"
符号
MyTable
+12334
+23343
+23443
+23432
结果
12334
23343
23443
23432
下面的方法会起作用吗?
update MyTable
set [F Number] = Right([F Number],LEN([F Number]) - 1)
答案 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 '+%';