我想从我的表中选择所有行,其中一列的值以另一列的值开头。
Table
column_a column_b
abc abcdef
pqr rstrv
xyz xyzabc
uvw abcdef
我想要
pqr rstrv
uvw abcdef
我正在使用查询
SELECT * FROM table_name WHERE column_b NOT LIKE column_a + '%'
我收到了错误
1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第1行'+'%'LIMIT 0,30'附近使用正确的语法
我尝试过这些问题的解决方案 Compare Columns Where One is Similar to Part of Another
Oracle: LIKE where any part of one string matches amy part of another string
SQL search column where one item in column is substring of another item
SQL search column where one item in column is substring of another item Update。但仍导致错误或错误结果
我的mysql版本是服务器版本:5.5.44-0ubuntu0.14.04.1(Ubuntu)。 我正在使用phpMyAdmin来执行查询。
答案 0 :(得分:2)
你有正确的想法,但MySQL并不支持+
运算符进行字符串连接,仅用于数学加法。相反,只需使用concat
函数:
SELECT * FROM table_name WHERE column_b NOT LIKE CONCAT(column_a, '%')
答案 1 :(得分:1)
在MySQL中,您应该使用CONCAT()
而不是+
:
select *
from TableName
where column_b not like CONCAT(column_a,'%')
在SQL Server中:
select *
from TableName
where column_b not like column_a+'%'
答案 2 :(得分:1)
尝试
SELECT * FROM table_name WHERE column_b NOT LIKE CONCAT(column_a,'%')
或
SELECT * FROM table_name WHERE column_b LIKE CONCAT('%', column_a, '%')