作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我这里有包含三个字段的示例表。
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)
我无法达到我想要的结果。当我尝试使用 12
的 paramA 值和 ''
的 paramB 值进行搜索时,我得到了 2
结果:
FieldA FieldB FieldC
======================================
123XXX456 XXX John
124XXX333 XXX Jenny
因为它显然与 12%
匹配,而这不是我想要的。我希望参数应该匹配字符串的正确索引。
如果我搜索 paramA = '12'
和 paramB = ''
那么它应该没有结果。要获取字段(FieldB
、FieldC
),我需要 paramA = '123'
和 paramB = '456 的正确值'
所以它将返回 XYZ
和 John
。如果我想返回 James
,那么我必须提供 paramA = '456'
和 paramB = '345'
我如何正确地为此构建 SQL 语句?任何想法?谢谢。
最佳答案
SELECT FieldB, FieldC
FROM TableA
WHERE LEFT(FieldA,3) = @paramA
AND RIGHT(FieldA,3) = @paramB;
关于mysql - WHERE 子句中带有 substr 的 SELECT 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9628460/
我是一名优秀的程序员,十分优秀!