首先觀察下面的查詢
select * from company where f_id in ('210','205','208')
select * from company where f_id in ('210,205,208')
現在我要根據另一張模板表中的一個字段查詢他下面的公司,存的是字符串類型
這時
select * from company where f_id in (select company_id from templet where f_id=583)
只查詢出一條數據,說明他查詢的結果是一個字符串'210,205,208',而我們需要的是'210','205','208',
這時會想到分割,但是發現需要循環很麻煩。這里提供正則表達式的方式解決如下
先把字符串替換成正則需要的樣式,把‘210,205,208’轉成210|205|208,再用正則匹配
SELECT
*
FROM
company
WHERE
f_id REGEXP (
SELECT
REPLACE (
(
SELECT
company_id
FROM
templet
WHERE
f_id = 583
),
',',
'|'
)
)