在SQL语句中,是否应该使用LIKE或'='来比较字符串,这是一个(几乎是宗教式的)讨论。
有使用LIKE的理由吗? 有使用'='的理由吗? 性能?可读性呢?
在SQL语句中,是否应该使用LIKE或'='来比较字符串,这是一个(几乎是宗教式的)讨论。
有使用LIKE的理由吗? 有使用'='的理由吗? 性能?可读性呢?
当前回答
对于模式匹配使用LIKE。对于精确匹配=。
其他回答
Postgres提供了一些其他的字符串匹配技巧(如果它恰好是你的DB):
ILIKE是一个不区分大小写的LIKE匹配:
select * from people where name ilike 'JOHN'
匹配:
约翰 约翰 约翰
如果你真的很生气,你可以使用正则表达式:
select * from people where name ~ 'John.*'
匹配:
约翰 Johnathon 约翰尼
即使性能较慢,也要使用“like”的另一个原因是:字符值在比较时会隐式转换为整数,因此:
@transid varchar(15)
如果@transid != 0
将会给出一个“The conversion of The varchar value '123456789012345' overflow an int column”错误。
在我的小经验中:
“=”表示精确匹配。
“LIKE”表示部分匹配。
LIKE和相等运算符有不同的目的,它们做的事情不一样: =更快,而LIKE可以解释通配符。在你能使用的地方使用=,在你必须使用的地方使用LIKE。
SELECT * FROM user WHERE login LIKE 'Test%';
样本匹配:
测试用户1 测试用户2 测试U 测试
LIKE在shell中匹配像通配符char [*, ?] LIKE '%suffix' -给我所有以后缀结尾的东西。你不能用= 这要看具体情况了。