如果它是SQL中的特定字符,如何删除第一个字符

w3n*_*n2u 10 sql sql-server sql-server-2008

我目前有一个表,Telephone它有如下条目:

9073456789101
+773456789101
0773456789101
Run Code Online (Sandbox Code Playgroud)

我想要做的是从所有具有9的条目的开头处仅删除9,但保留其他条目.

任何帮助将不胜感激.

Nen*_*vic 19

虽然所有其他答案可能也有效,但我建议尝试使用STUFF函数来轻松替换字符串的一部分.

UPDATE Telephone
SET number = STUFF(number,1,1,'')
WHERE number LIKE '9%'
Run Code Online (Sandbox Code Playgroud)

SQLFiddle DEMO


Rad*_*hiu 5

这是代码和一个SQLFiddle

SELECT CASE 
WHEN substring(telephone_number, 1, 1) <> '9'
  THEN telephone_number
ELSE substring(telephone_number, 2, LEN(telephone_number))
END
FROM Telephone
Run Code Online (Sandbox Code Playgroud)


小智 5

我最近使用 RIGHT()、LEN() 和 PATINDEX() 的组合解决了类似的问题。当 PATINDEX 找到第一个字符为 9 时,将返回整数 1,否则返回 0。此方法允许一次返回所有记录,无需使用 CASE WHEN 语句。

SELECT
    RIGHT(number, LEN(number) - PATINDEX('9%', number))
FROM Telephone
Run Code Online (Sandbox Code Playgroud)