我试图从位于英镑(#)符号后面以及之后的任何空格之前的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