SQL字段包含一个字符串(逗号分隔或在开始/结束时)

时间:2013-05-07 09:30:25

标签: sql sql-like

我的数据库上有一个字段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的解决方案。

2 个答案:

答案 0 :(得分:1)

WHERE "ERR_CODES" LIKE '%Section_Not_Found_WCLS%'

修改

 WHERE ',' + "ERR_CODES" + ',' LIKE '%,Section_Not_Found_WCLS,%'

答案 1 :(得分:1)

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

不要将一堆字符串保留在一行中,而是创建一个额外的表,以使事情更有条理。我创建了一个图像来描绘我的意思。

Suggestion