DB2根据字段的5个字符获取值

时间:2015-07-27 19:47:39

标签: sql db2

我正在使用设计非常糟糕的桌子。我有一个名为可选字段的字段,由于某种原因,它已被用作不想要正确创建表的人的全部。

我需要进行查询,查看此optional_fields值,并对optional_fields中字符串的第五个值进行比较。

此字段的值类似于NN14YN...N

我的查询类似于:

SELECT COMPANY_NUMBER
FROM table
WHERE fifth character of OPtional Fields = 'Y'

2 个答案:

答案 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) 
)

想到我会分享。我第一次使用它时感到很惊讶!