একই রোয়ের দুটি কলামে একটি কলামের মান অন্যটিতে সাবস্ট্রিং হিসেবে আছে কিনা চেক করতে LIKE এবং CONCAT() একসাথে ব্যবহার করা হয়।
টেবিল তৈরি ও ডেটা ইনসার্ট
mysql> CREATE TABLE DemoTable (FirstName VARCHAR(100), FullName VARCHAR(100)); Query OK, 0 rows affected (0.53 sec)
mysql> INSERT INTO DemoTable VALUES ('John', 'John Smith');
Query OK, 1 row affected (0.08 sec)
mysql> INSERT INTO DemoTable VALUES ('David', 'John Miller');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES ('Bob', 'Sam Miller');
Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO DemoTable VALUES ('Chris', 'Chris Brown');
Query OK, 1 row affected (0.10 sec)
রেকর্ড দেখানো
mysql> SELECT * FROM DemoTable;
আউটপুট:
+-----------+-------------+ | FirstName | FullName | +-----------+-------------+ | John | John Smith | | David | John Miller | | Bob | Sam Miller | | Chris | Chris Brown | +-----------+-------------+ 4 rows in set (0.00 sec)
FirstName FullName-এ আছে কিনা চেক (LIKE + CONCAT)
mysql> SELECT FirstName, FullName
FROM DemoTable
WHERE FullName LIKE CONCAT('%', FirstName, '%');
ফলাফল (John ও Chris মিলে গেছে):
+-----------+-------------+ | FirstName | FullName | +-----------+-------------+ | John | John Smith | | Chris | Chris Brown | +-----------+-------------+ 2 rows in set (0.00 sec)
ব্যাখ্যা
CONCAT('%', FirstName, '%')- FirstName-এর চারপাশে 와일্ডকার্ড (%) যোগ করে প্যাটার্ন বানায়।LIKE- প্যাটার্ন ম্যাচ করে।- এটি কেস-ইনসেনসিটিভ (ডিফল্ট collation-এ)۔
কেস-সেনসিটিভ ম্যাচ
WHERE FullName LIKE CONCAT('%', FirstName, '%') COLLATE utf8mb4_bin
পারফরম্যান্স নোট
শুরুতে % থাকলে ইনডেক্স ব্যবহার হয় না (ফুল স্ক্যান)। বড় টেবিলে ফুল-টেক্সট সার্চ বা জেনারেটেড কলাম ব্যবহার করুন।