我有一个包含200,000个帐户的数据库,这是个人/家庭的混合,即John Doe和商业名称。我想创建一个SELECT语句来选择仅限商业名称,我相信唯一可行的方法是:
and (account like'%inc.'
or account like'%ltd'
or account like'&gmbh')
...等
有没有人写过这样的东西?我也需要包括国际后缀,但我甚至找不到按国家/地区列出的可靠列表。
答案 0 :(得分:3)
答案是,你不能这样做。如果您的数据非常脏,以至于您不了解个人与企业之间的差异,那么为什么您认为会有'inc.'
,“gmbh'
或'ltd'
结束?
然后,您需要考虑令人兴奋的公司名称,如“John Deere”或“Arthur Andersen”。这看起来很像一个人的名字。如果您没有公司结构指标,那么您将如何区分它?
正确的解决方案是使用第三方供应商来更正帐户的名称。您还可以考虑更改您的操作系统(无论谁输入名称)以输入人/公司指标。顺便说一句,你对那些自己合并的个人做了什么,比如在美国成为S-Corp?
如果您想开始临时工作,那么我首先要查看每个名字中的最后一个字:
select right(name, charindex(' ', reverse(name))), count(*), min(name), max(name)
from t
where name like '% %'
group by left(name, charindex(' ', name))
(这是获取名称中最后一个单词的SQL Server语法。)查看这些单词以查看可能的后缀列表。
顺便说一句,如果这是国际性的,如果某些语言使用前缀来表示公司而不是后缀,我不会感到惊讶。