我正在开发一个项目,我们必须弄清楚某个给定字段是否可能是公司名称而不是地址.
在对它进行非常广泛的扫描时,我们假设如果该字段不包含数字,则可能是名称与街道地址(我们的目标是80%的情况,知道有些人必须手动完成).
所以现在对手头的问题.给定一个表,为了简单起见,单个varchar(100)列,我怎样才能找到那些在字段内任何位置没有数字字符的记录?
例如:
"Main Street, Suite 10A" --Do not return this.
"A++ Billing" --Should be returned
"XYZ Corporation" --Should be returned
"100 First Ave, Apt 20" --Should not be returned
Run Code Online (Sandbox Code Playgroud)
提前致谢!
Stu*_*tLC 35
Sql Server允许在运算符中指定范围的类似regex的语法,[0-9]
或者可以与任何字符串通配符()一起使用.例如:[0123456789]
LIKE
%
select * from Address where StreetAddress not like '%[0-9]%';
Run Code Online (Sandbox Code Playgroud)
意志%
开头的通配符like
显然会损害性能(可能是扫描),但在你的情况下,这似乎是不可避免的.
select * from table where column not like '%[0-9]%'
Run Code Online (Sandbox Code Playgroud)
此查询返回表中所有行,其中列不包含0到9之间的任何数字.
我喜欢简单的正则表达式方法,但为了讨论,将提到使用PATINDEX的替代方法.
SELECT InvoiceNumber from Invoices WHERE PATINDEX('%[0-9]%', InvoiceNumber) = 0
Run Code Online (Sandbox Code Playgroud)