1

Is there a way to compare the values of two columns in MySQL? For example if I have a table:

+----------------+
| Col1  | Col2   |
|----------------|
| abc   | 123abc |
| def   | 234def |
|       | 123ghi |
+----------------+

And I wanted to retrieve all the entries in Col2 that contained the values of Col1:

+---------+
| NewCol  |
|---------|
| 123abc  |
| 234def  | 
+---------+

How would I go about that?

Here is a pseudo-query to explain a bit further.

SELECT Col2 FROM TableName WHERE Col2 LIKE Col1;
Aldwoni
  • 1,168
  • 10
  • 24
Ben
  • 2,433
  • 5
  • 39
  • 69

3 Answers3

5

Use LOCATE()

WHERE LOCATE(Col1, Col2);

It returns a non-zero value if Col1 is contained within Col2.

Update

Note that an empty substring is always contained within another string, so in this case you need another condition:

WHERE LENGTH(Col1) AND LOCATE(Col1, Col2);
Ja͢ck
  • 170,779
  • 38
  • 263
  • 309
0
SELECT Col2 FROM TableName WHERE Col2 in(SELECT Col1 from TableName);
Revan
  • 1,104
  • 12
  • 27
0
SELECT Col2 FROM TableName WHERE Col2 LIKE Concat("%",Col1,"%");
jaipster
  • 11,967
  • 2
  • 21
  • 24