我有一个电话号码表,将电话号码存储为varchar(20)。我要实现两个全数字的搜索要求,但也只在号码的最后一部分,所以一个典型的查询将是:字符串结尾的通配匹配索引
SELECT * FROM PhoneNumbers WHERE Number LIKE '%1234'
我怎样才能把一个索引上Number
列,使这些搜索效率高?有没有办法创建一个索引来排序反转字符串上的记录?另一种选择可能是将它们存储之前扭转号码,这将给像查询:
SELECT * FROM PhoneNumbers WHERE ReverseNumber LIKE '4321%'
然而这将需要对数据库的所有用户随时逆转的字符串。它可以通过存储正常和反转数字并通过插入/更新触发器更新相反数字来解决。但那种解决方案并不是很优雅。
其他建议?
看看这个答案:HTTP:/ /stackoverflow.com/questions/1537645/in-the-beginning-of-like-clause/1537706#1537706 – 2010-05-11 11:36:04