簡體   English   中英

SQL Select模式,例如column_name

[英]SQL Select pattern like column_name

是否存在諸如sql查詢之類的問題,從而限制了結果包含在查詢值中。

通常像是:

SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;

我希望成為

SELECT column_name(s)
FROM table_name
WHERE pattern LIKE column_name;

例如:

id   |   val
1    |   c:/tests/one
2    |   c:/tests/two
3    |   c:/

我可以使用'c:/ tests / two / fail / results'進行查詢,並返回2和3,因為它們是子字符串。

SELECT column_name
FROM table_name 
WHERE instr('c:/tests/two/fail/results', column_name) > 0;

如果您真的想使用LIKE,則可以使用

SELECT 
    * 
FROM
    example
WHERE
    'c:/tests/two/fail/results'
LIKE
    CONCAT(val, '%');

請注意,LIKE的右側是一個模式,您必須在其后附加通配符'%'。

演示版

注意:

當然,絕大部分的解決方案都會起作用,甚至可能更快。

我的解決方案的另一個問題是,列val本身可能不包含通配符。 現在,LIKE的兩個通配符是

%   Matches any number of characters, even zero characters
_   Matches exactly one character

下划線不僅是文件路徑中允許的字符,而且經常被使用。 我強烈建議使用juergen d的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM