我正在开展一个项目,我们必须弄清楚某个字段是否可能是公司名称与地址。
在对它进行非常广泛的扫描时,我们假设如果此字段不包含数字,则可能是名称与街道地址(我们的目标是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
提前致谢!
答案 0 :(得分:34)
Sql Server允许在LIKE
operator中指定范围[0-9]
或Set [0123456789]
的类似regex的语法,该语法可以与任何字符串通配符一起使用({{1 }})。例如:
%
select * from Address where StreetAddress not like '%[0-9]%';
开头的通配符%
显然会影响性能(可能是扫描),但在您的情况下,这似乎是不可避免的。
答案 1 :(得分:8)
select * from table where column not like '%[0-9]%'
此查询返回表中所有行,其中列不包含0到9之间的任何数字。
答案 2 :(得分:8)
我喜欢简单的正则表达式方法,但为了讨论起见,请提及使用 PATINDEX 的替代方法。
SELECT InvoiceNumber from Invoices WHERE PATINDEX('%[0-9]%', InvoiceNumber) = 0
答案 3 :(得分:3)
此查询列出使用数字字符
创建的表格select * from SYSOBJECTS where xtype='u' and name like '%[0-9]%'
答案 4 :(得分:2)
这对我有用。
select total_employee_count from company_table where total_employee_count like '%[^0-9]%'
这会返回包含非数字值的所有行,包括2-3 ..