http://www.voidcn.com/article/p-gmvusbbi-bub.html
我这里有三个字段的样本表.
TableA
FieldA FieldB FieldC
======================================
123XYZ456 XYZ John
124NNN333 NNN Jenny
232XPT124 XPT Jade
456XXX345 XXX James
FieldA的固定长度为9.我没有设计这个表,有些应用程序已经在使用它.
我想选择具有针对FieldA的条件的FieldB和FieldC.
使用这个sql语句:
SELECT FieldB,
FieldC
FROM TableA
WHERE FieldA LIKE Concat(@paramA, '%', @paramB)
我无法达到我想要的结果.当我尝试使用paramA值12和paramB值”进行搜索时,我得到2个结果:
FieldA FieldB FieldC
======================================
123XXX456 XXX John
124XXX333 XXX Jenny
因为很明显它与12%匹配,这不是我想要的.我希望params应该匹配字符串的正确索引.
如果我搜索paramA =’12’和paramB =”那么它应该没有结果.要获取字段(FieldB,FieldC),我需要正确的paramA =’123’和paramB =’456’的值,因此它将返回XYZ和John.如果我想要归还詹姆斯那么我必须给paramA =’456’和paramB =’345′
我怎样才能为此正确构建SQL语句?任何的想法?谢谢.
使用 LEFT()
和 RIGHT()
:
SELECT FieldB, FieldC
FROM TableA
WHERE LEFT(FieldA,3) = @paramA
AND RIGHT(FieldA,3) = @paramB;