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

Sql DB2根据字段的5个字符获取值,sql,db2,Sql,Db2,我用的是一张设计很糟糕的桌子。我有一个名为optionalfields的字段,出于某种原因,它被用作不想正确创建表的人的总括 我需要做一个查询,查看这个可选的_字段值,并对可选的_字段中字符串的第五个值进行比较 此字段的值类似于NN14YN…N 我的问题类似于: SELECT COMPANY_NUMBER FROM table WHERE fifth character of OPtional Fields = 'Y' 查看DB2中支持的功能(根据DB2 for Linux UNIX和Wind

我用的是一张设计很糟糕的桌子。我有一个名为optionalfields的字段,出于某种原因,它被用作不想正确创建表的人的总括

我需要做一个查询,查看这个可选的_字段值,并对可选的_字段中字符串的第五个值进行比较

此字段的值类似于
NN14YN…N

我的问题类似于:

SELECT COMPANY_NUMBER
FROM table
WHERE fifth character of OPtional Fields = 'Y'
查看DB2中支持的功能(根据DB2 for Linux UNIX和Windows 9.7.0的文档),似乎可以使用
substr

SELECT COMPANY_NUMBER
FROM table
WHERE substr(optional_Fields,5,1) = 'Y'
查看DB2中支持的功能(根据DB2 for Linux UNIX和Windows 9.7.0的文档),似乎可以使用
substr

SELECT COMPANY_NUMBER
FROM table
WHERE substr(optional_Fields,5,1) = 'Y'

除了@jpw给出的很好的答案外,如果出于某种原因需要检查字符串中的多个位置(不幸的是,我曾经不得不这样做),您可以在中使用一个
,并反转“正常”顺序,如下所示:

...
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) 
)

我只是想和你分享。我第一次使用它时,它让我很惊讶

除了@jpw给出的很好的答案外,如果出于某种原因需要检查字符串中的多个位置(不幸的是,我不得不一次检查多个位置),您可以在
中使用
,并反转“正常”顺序,如下所示:

...
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) 
)

我只是想和你分享。我第一次使用它时,它让我很惊讶

非常感谢,这是我一直在寻找的解决方案。非常感谢,这是我一直在寻找的解决方案。感谢你的附录,这将非常有用。感谢你的附录,这将非常有用。