这个问题听起来令人困惑,但我有一列数据按字符|~*~|
划分。我试图根据这些字符之间的字符串查找数据。字符行不是以分隔符开头,而是以分隔符结束。
e.g。 Product Developer|~*~|Technician|~*~|
我遇到的问题如下:
Product Developer|~*~|Technician|~*~|Lead Product Developer|~*~|
如果我搜索WHERE T.COLUMN LIKE '%Lead Product Developer%'
,我就可以获得该列,但如果我搜索WHERE T.COLUMN LIKE '%Product Developer%'
,那么我将获得Lead Product Developer
和Product Developer
的位置它是字符串的一部分。我怎样才能避免这种情况,只能得到我正在寻找的字符串。
以下是我所拥有的片段:
SELECT
T.COLUMN,
FROM TABLE1 T
WHERE T.COLUMN LIKE '%Product Developer%'
答案 0 :(得分:2)
首先,您的数据结构是错误的,错误的,错误的。正确的 SQL 表示此关系的方式是使用另一个表,列表中的每个项目和项目都有一行。此外,Oracle还提供JSON结构和嵌套表。因此,有很多方法可以做到这一点。
有时,我们会遇到其他人非常糟糕的设计决策。在这种情况下,您可以巧妙地使用like
:
WHERE '|~*~|' || T.COLUMN LIKE '%|~*~|Product Developer|~*~|%'
由于column
以分隔符结尾,因此您无需再次将其添加到结尾,只能添加到开头。