MySQL 如何将 LIKE 与列名一起使用
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/1398720/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
how to use LIKE with column name
提问by ArK
Normally LIKE
statement is used to check the pattern like data.
通常LIKE
语句用于检查模式之类的数据。
example:
例子:
select * from table1 where name like 'ar%'
My problem is to use one column of table with LIKE
statement.
我的问题是在LIKE
语句中使用一列表。
example:
例子:
select * from table1, table2 where table1.x is like table2.y%
Query above results error . how to use one column data in like
query?
查询上述结果错误。如何在like
查询中使用一列数据?
回答by MatBailie
You're close.
你很接近。
The LIKE operator works with strings (CHAR, NVARCHAR, etc). so you need to concattenate the '%' symbol to the string...
LIKE 运算符处理字符串(CHAR、NVARCHAR 等)。所以你需要将 '%' 符号连接到字符串...
MS SQL Server:
微软 SQL 服务器:
SELECT * FROM table1,table2 WHERE table1.x LIKE table2.y + '%'
Use of LIKE, however, is often slower than other operations. It's useful, powerful, flexible, but has performance considerations. I'll leave those for another topic though :)
但是,LIKE 的使用通常比其他操作慢。它有用、强大、灵活,但有性能方面的考虑。不过,我会将它们留给另一个主题:)
EDIT:
编辑:
I don't use MySQL, but this may work...
我不使用 MySQL,但这可能有效......
SELECT * FROM table1,table2 WHERE table1.x LIKE CONCAT(table2.y, '%')
回答by RoRo
SQL SERVER
SQL服务器
WHERE ColumnName LIKE '%'+ColumnName+'%'
回答by Tomalak
...
WHERE table1.x LIKE table2.y + '%'
回答by Koekiebox
declare @LkeVal as Varchar(100)
declare @LkeSelect Varchar(100)
Set @LkeSelect = (select top 1 <column> from <table> where <column> = 'value')
Set @LkeVal = '%' + @LkeSelect
select * from <table2> where <column2> like(''+@LkeVal+'');
回答by alvaroIdu
ORACLE DATABASE example:
ORACLE 数据库示例:
select *
from table1 t1, table2 t2
WHERE t1.a like ('%' || t2.b || '%')
回答by bhaskar
For SQLLite you will need to concat the strings
对于 SQLLite,您需要连接字符串
select * from list1 l, list2 ll
WHERE l.name like "%"||ll.alias||"%";