我試圖從位於英鎊(#)符號後面以及之後的任何空格之前的SQL Server 2012中的字符串獲取數字。例如,商店號碼。比方說,我們有以下幾點:SQL - 在英鎊(#)符號後從字符串獲取數字
Big Box Store #450
Big Box Store #768
Little Shop #2
Widgets Warehouse #678
Little Shop #5
Widgets Warehouse #559
Corner Boutiques #32 *CLOSED
Corner Boutiques #67 *CLOSED
Corner Boutiques #12
Buy More #1047 SUPERSTORE
1 Stop Shop #3
1 Stop Shop #17
You 2 Me #16
我將返回以下:450,768,2,678,5,559,32,67,12,1047,3,17,16
正如你所看到的,並非所有的字符串在最後都有數字。他們中的一些甚至在商店的名字中有一個數字字符。我認爲解決這個問題的最好方法就是提取英鎊符號後面的數字。
有沒有辦法做到這一點?我已經看了下面的文章:
Query to get only numbers from a string
https://www.sqlservercentral.com/Forums/Topic456023-338-1.aspx
好像PATINDEX
可能是很好用,但我不能確定我已經試過迄今沒有返回預期結果。
非常感謝!
這看起來不錯,我測試過,它在數據集上工作,但我的數據類型是char(65)。您的解決方案似乎只適用於varchars和nvarchars。我做錯了什麼,或者有其他方法嗎?我甚至拋出了一些「CONVERT」函數來將它們轉換爲varchar(65),但那不起作用。謝謝! – jderekc
@jderekc我添加了一個'CHAR'版本。 RIGHT()函數只接受'NVARCHAR'和'VARCHAR'。我用'SUBSTRING'取代了這個 – scsimon
這很完美!每天學些新東西。非常感謝您的幫助,@ scsimon。 – jderekc