这是 TERADATA(不是 SQL Server,不是 Oracle)
我有一列电话号码:
(312)9879878
(298)989-9878
430-394-2934
394s9048ds987
..........
我需要将此列清理为
3129879878
2989899878
4303942934
3949048987
..........
所以只有数字应该留下。应删除所有其他字母、特殊字符、连字符……。我怎样才能做到这一点?
您的站点上运行的是哪个 TD 版本?如果它是 14 或者你安装了 oTranslate UDF,你可以简单地做一个嵌套 Translate 的老技巧:
oTranslate(phonenum, oTranslate(phonenum, '0123456789', ''), '')
回答 :
声明 @Input varchar(1000)
SET @Input = '01 vishal 98-)6543'
声明@pos INT
SET @Pos = PATINDEX('%[^0-9]%',@Input)
而@Pos > 0
开始
SET @Input = STUFF(@Input,@pos,1,'') SET @Pos = PATINDEX('%[^0-9]%',@Input)
结尾
选择@输入
谢谢你,维沙尔·帕特尔
我有这个函数可以从字符串中提取数字(0-9):
CREATE FUNCTION NumbersOnly(@STR VARCHAR(2000))
RETURNS VARCHAR(1000)
AS
BEGIN
DECLARE @N INT
DECLARE @NN VARCHAR(1000)
SET @N = 0
SET @NN = ''
WHILE @N <= LEN(@STR)
BEGIN
IF SUBSTRING(@STR,@N,1) >= '0'
AND SUBSTRING(@STR,@N,1) <= '9'
BEGIN
SET @NN = @NN + SUBSTRING(@STR,@N,1)
END
SET @N = @N + 1
END
RETURN @NN
END