向后使用 LIKE 的 PLSQL 搜索字符串
PLSQL search string using LIKE backwards
我有一个包含 VARCHAR2 列的视图。该列包含一个字符串
这是来自不同 table.
的 2 列的串联
例如我搜索"James Smith"。
我使用 LIKE:
搜索列
LOWER(USER_LIST.SEARCH_STRING) LIKE LOWER 'James Smith'
我得到的结果很好。
我想知道是否有一个选项可以执行反向搜索(仍然使用 LIKE)并获得相同的结果,如下所示:
LOWER(USER_LIST.SEARCH_STRING) LIKE LOWER 'Smith James'
请注意,我知道使用正则表达式或向视图添加额外的列可以解决此问题,但我希望尽可能少地进行更改。
提前致谢。
我希望下面的答案能够说明您的要求。
SELECT A.NM
FROM
(SELECT 'Avrajit Roy' nm FROM dual
)A
WHERE lower(A.NM) LIKE lower('avrajit roy')
OR TRIM(lower(SUBSTR(a.nm,instr(a.nm,' ',1)+1,LENGTH(a.nm))
||' '
||SUBSTR(a.nm,1,instr(a.nm,' ',1)))) LIKE lower('roy avrajit');
我有一个包含 VARCHAR2 列的视图。该列包含一个字符串 这是来自不同 table.
的 2 列的串联例如我搜索"James Smith"。 我使用 LIKE:
搜索列LOWER(USER_LIST.SEARCH_STRING) LIKE LOWER 'James Smith'
我得到的结果很好。 我想知道是否有一个选项可以执行反向搜索(仍然使用 LIKE)并获得相同的结果,如下所示:
LOWER(USER_LIST.SEARCH_STRING) LIKE LOWER 'Smith James'
请注意,我知道使用正则表达式或向视图添加额外的列可以解决此问题,但我希望尽可能少地进行更改。
提前致谢。
我希望下面的答案能够说明您的要求。
SELECT A.NM
FROM
(SELECT 'Avrajit Roy' nm FROM dual
)A
WHERE lower(A.NM) LIKE lower('avrajit roy')
OR TRIM(lower(SUBSTR(a.nm,instr(a.nm,' ',1)+1,LENGTH(a.nm))
||' '
||SUBSTR(a.nm,1,instr(a.nm,' ',1)))) LIKE lower('roy avrajit');