如何截斷在字符串中NUMERICS在SQLSERVER如何獲得比NUMERICS其他的字符串(去除串數字)在SQLSERVER
外匯:字符串值:200可能不是[34534]
結果:許多不(reulst含有比其他NUMERICS)
如何截斷在字符串中NUMERICS在SQLSERVER如何獲得比NUMERICS其他的字符串(去除串數字)在SQLSERVER
外匯:字符串值:200可能不是[34534]
結果:許多不(reulst含有比其他NUMERICS)
如果你想從一個字符串去掉所有的數字,有各種可能方式:
1)純TSQL:
例如(不一定是最好的/最漂亮的方式)
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中進行操作,原樣返回數據並將格式化/清理保留給調用代碼(這將在字符串操作中更好地執行)。
第三種選擇將是我自然會去的,除非有充分理由不這樣做。
SQL Server本身不支持REPLACE()
函數中的正則表達式。在嘗試這些方法之一:
這兩個都有一些性能影響,所以我會小心你如何使用它們。
阿格,AdaTheDev擊敗我的答覆。在我的列表中查看該答案,以查看選項#2的示例。 – 2010-02-03 14:02:23
需要一些更多的信息,如樣品輸入和輸出(你有什麼和你想要什麼) – 2010-02-03 13:51:45