SQL - 如何在字符串列表中找到可以作为列表中另一个字符串的一部分的确切字符串?
SQL - How do I find the exact string in a list of strings that can be part of another string in the list?
这个问题听起来很混乱,但我有一列数据按字符 |~*~|
划分。我试图根据这些字符之间的字符串查找数据。这行字符不是以分隔符开头,而是以分隔符结尾。
例如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%'
首先,你的数据结构错了,错了,错了。表示此关系的正确 SQL 方式是使用另一个 table,列表中的任何内容和项目一行。此外,Oracle 还提供 JSON 结构和嵌套 table。因此,不乏正确执行此操作的方法。
有时,我们会被其他人非常糟糕的设计决定所困。在这种情况下,你可以巧妙地使用like
:
WHERE '|~*~|' || T.COLUMN LIKE '%|~*~|Product Developer|~*~|%'
因为column
以分隔符结束,不需要再在末尾加,只需要在开头。
这个问题听起来很混乱,但我有一列数据按字符 |~*~|
划分。我试图根据这些字符之间的字符串查找数据。这行字符不是以分隔符开头,而是以分隔符结尾。
例如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%'
首先,你的数据结构错了,错了,错了。表示此关系的正确 SQL 方式是使用另一个 table,列表中的任何内容和项目一行。此外,Oracle 还提供 JSON 结构和嵌套 table。因此,不乏正确执行此操作的方法。
有时,我们会被其他人非常糟糕的设计决定所困。在这种情况下,你可以巧妙地使用like
:
WHERE '|~*~|' || T.COLUMN LIKE '%|~*~|Product Developer|~*~|%'
因为column
以分隔符结束,不需要再在末尾加,只需要在开头。