サンプルテーブル
Column1 | Column2 |
---|---|
ABCDEFG | This |
ACCDEEE | column |
ABCDEFH | will |
ABCXYXZ | be |
ZBCDEFZ | left |
テーブル内の Column1 にある文字列の部分的に一致するレコードを抽出
例えば、
・先頭から ABCDEF まで一致するレコード
・2文字目から BCDEまで一致するレコード
の事です
先頭からABCDEFまで一致 SQL
substring.sql
SELECT
s.*
FROM
sample s
WHERE
SUBSTRING(s.Column1,1,6) IN (
SELECT
SUBSTRING(s2.Column1,1,6) c1
FROM
sample s2
GROUP BY
SUBSTRING(s2.Column1,1,6)
HAVING
COUNT(c1) > 1
);
一度 GROUP BY で一致するレコードを抽出してからデータを検索
Column1 | Column2 |
---|---|
ABCDEFG | This |
ABCDEFH | will |
2文字目から BCDEまで一致 SQL
substring2.sql
SELECT
s.*
FROM
sample s
WHERE
SUBSTRING(s.Column1,2,4) IN (
SELECT
SUBSTRING(s2.Column1,2,4) c1
FROM
sample s2
GROUP BY
SUBSTRING(s2.Column1,2,4)
HAVING
COUNT(c1) > 1
);
Column1 | Column2 |
---|---|
ABCDEFG | This |
ABCDEFH | will |
ZBCDEFZ | left |
SQLも奥が深いですね・・・