0

我的数据库中有一个字段ERR_CODES,其中包含当前记录的一些错误代码。

例如,它可以包含:

Invalid_Template_Code_Filename_WCLS,Color_Template_Of_Different_Domain_WCLS,Section_Not_Found_WCLS

假设我想测试它是否包含Section_Not_Found_WCLS,而不在字段的开头和结尾添加逗号。

我应该测试:

WHERE "ERR_CODES" LIKE '%,Section_Not_Found_WCLS,%'  --between other errs
   OR "ERR_CODES" LIKE 'Section_Not_Found_WCLS,%'    --at start of a err sequence
   OR "ERR_CODES" LIKE '%,Section_Not_Found_WCLS'    --at end of a err sequence
   OR "ERR_CODES"   =  'Section_Not_Found_WCLS'      --unique err for this record

这真的不是很漂亮。

有没有办法使用通配符来压缩它?

编辑:

在 RegEx 中,这将是((?<=,)|^)Section_Not_Found_WCLS((?=,)|$)

理想情况下,我想要一个适用于 Oracle、MSSQL、PGSQL 的解决方案。

4

2 回答 2

1

另一个可能需要考虑的事情是使数据库更具关系性,因为它是标准。

与其将一堆字符串排成一行,不如多做一张桌子,让事情更有条理。我创建了一个图像来准确描述我的意思。

建议

于 2013-05-07T09:38:02.453 回答
1
WHERE "ERR_CODES" LIKE '%Section_Not_Found_WCLS%'

编辑:

 WHERE ',' + "ERR_CODES" + ',' LIKE '%,Section_Not_Found_WCLS,%'
于 2013-05-07T09:35:25.087 回答