我正在使用设计非常糟糕的桌子。我有一个名为可选字段的字段,由于某种原因,它已被用作不想要正确创建表的人的全部。
我需要进行查询,查看此optional_fields值,并对optional_fields中字符串的第五个值进行比较。
此字段的值类似于NN14YN...N
我的查询类似于:
SELECT COMPANY_NUMBER
FROM table
WHERE fifth character of OPtional Fields = 'Y'
答案 0 :(得分:3)
查看DB2中受支持的string functions(根据 DB2 for Linux UNIX和Windows 9.7.0 的文档),似乎可以使用substr
:
SELECT COMPANY_NUMBER
FROM table
WHERE substr(optional_Fields,5,1) = 'Y'
答案 1 :(得分:1)
除了来自@jpw的好答案之外,如果由于某种原因你需要检查字符串中的多个位置(我不幸一次只能这样做),你可以使用IN
,反转“正常”顺序,如下:
...
WHERE 'Y' in (
substr(t.flags_field, 123, 1)
,substr(t.flags_field, 19, 1)
,substr(t.flags_field, 128, 1)
,substr(t.flags_field, 1, 1)
)
想到我会分享。我第一次使用它时感到很惊讶!