[英]Using Columns in a RegExp in MySQL
我正在使用regexp
的以下查詢:
SELECT a.id, a.company, a.name, b.title, b.description, b.t_id
FROM a, b
WHERE ( b.title
REGEXP "[[:<:]]a.company[[:>:]]" OR b.description
REGEXP "[[:<:]]a.company[[:>:]]" OR b.title
REGEXP "[[:<:]]a.name[[:>:]]" OR b.description
REGEXP "[[:<:]]a.name[[:>:]]" ) AND a.company != '' AND a.name != ''
但是,此查詢不會給出任何結果,也不會給出任何語法錯誤。
當我用任何公司名稱替換a.company
或a.name
,此查詢運行正常。 為什么此查詢不適用於列名?
您正在搜索文字字符串a.company
,而不是列。 試試這個:
SELECT a.id, a.company, a.name, b.title, b.description, b.t_id
FROM a, b
WHERE
(
b.title REGEXP concat('[[:<:]]', a.company, '[[:>:]]')
OR b.description REGEXP concat('[[:<:]]', a.company, '[[:>:]]')
OR b.title REGEXP concat('[[:<:]]', a.name, '[[:>:]]')
OR b.description REGEXP concat('[[:<:]]', a.name, '[[:>:]]')
)
AND a.company != '' AND a.name != ''
這為regexp
提供了列的值,而不是字符串'a.company'
。 由於我的猜測是你要比較列值(而不是列名),你需要將regexp
連接在一起。
您可以使用此查詢對此進行測試:
select
'My col: a.company' as Test1,
'My col: ' + a.company as Test2
from
a
這里, Test1
將始終為值My col: a.company
,而Test2將為My col: <company col value here>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.