这是TERADATA (不是SQL Server,不是Oracle)
我有一列电话号码:
(312)9879878
(298)989-9878
430-394-2934
394s9048ds987
..........
我需要将此列清理为
3129879878
2989899878
4303942934
3949048987
..........
所以只留下数字。应删除所有其他字母,特殊字符,连字符......我怎么能这样做?
答案 0 :(得分:4)
您的网站正在运行哪个版本的TD? 如果它是14或你安装了oTranslate UDF,你可以简单地做一个旧技巧嵌套翻译:
oTranslate(phonenum, oTranslate(phonenum, '0123456789', ''), '')
答案 1 :(得分:1)
答案:
DECLARE @Input varchar(1000)
SET @Input = '01 vishal 98-)6543'
DECLARE @pos INT
SET @Pos = PATINDEX('%[^ 0-9]%',@ Input)
WHILE @Pos> 0
BEGIN
SET @Input = STUFF(@Input,@pos,1,'') SET @Pos = PATINDEX('%[^0-9]%',@Input)
END
SELECT @Input
谢谢你, Vishal Patel
答案 2 :(得分:1)
我有这个函数从字符串中拉出数字(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