如何截断sqlserver
中字符串中的数字ForEx:字符串值:200可能不是[34534]
结果:许多不是(reulst包含非数字)
答案 0 :(得分:0)
如果你想从字符串中删除所有数字,有各种可能的方法:
1)纯TSQL:
e.g。 (不一定是最好/最漂亮的方式)
DECLARE @Test VARCHAR(50)
SET @Test = 'Test12value8with numbers'
DECLARE @index INTEGER
SELECT @index = PATINDEX('%[0-9]%', @Test)
WHILE (@index > 0)
BEGIN
SET @Test = LEFT(@Test, @index - 1) + RIGHT (@Test, (LEN(@Test) - @index))
SELECT @index = PATINDEX('%[0-9]%', @Test)
END
SELECT @Test
2)CLR功能(SQL 2005+) - 创建一个CLR函数来进行替换(即在.NET中),并调用该函数
3)根本不要在SQL中进行操作,按原样返回数据并将格式化/清理保留到调用代码(这将在字符串操作时表现更好)。
第三种选择将是我自然会选择的选项,除非有充分的理由不这样做。
答案 1 :(得分:0)
SQL Server本身不支持REPLACE()
函数中的正则表达式。您是否尝试过以下方法之一:
这两个都有一些性能影响,所以我会小心你如何使用它们。