如何从varchar列mysql中筛选数据

如何从varchar列mysql中筛选数据,mysql,Mysql,我们的数据库里有数据 id: 1 name: 100 abc id: 2 name: 200 xyz id: 3 name: 1000 kku id: 4 name: 12 yog id: 5 name: 1 ton SELECT id from table where name = '${result['name']}' 如果有人输入结果100 ABc,它将不匹配,因为我们的db有100 ABc,所以我们如何修复它请指导 我的意思是,如果有人把 SELECT id from table w

我们的数据库里有数据

id: 1 name: 100 abc
id: 2 name: 200 xyz
id: 3 name: 1000 kku
id: 4 name: 12 yog
id: 5 name: 1 ton

SELECT id from table where name = '${result['name']}'
如果有人输入结果100 ABc,它将不匹配,因为我们的db有100 ABc,所以我们如何修复它请指导

我的意思是,如果有人把

SELECT id from table where name = '100 ABC' or SELECT id from table where name = '100abc'

处理这个问题的典型方法是将两个比较都小写,例如

SELECT id FROM table WHERE name = LOWER('100 ABC');

然而,更好的方法是只在表中存储小写,然后只从应用程序层传入小写数据。您可以考虑在MySQL中使用小写排序规则,但也可以从应用程序中强制执行。

在比较期间指定独立于案例的校对。或者,如果大小写对所有情况下的值都没有意义,请更改列的排序规则。请参阅:@Akina您的意思是“不区分大小写”吗?@草莓,您是对的。感谢您的回复。如果有人在空格之间移动,例如在数据库中,如果请求带有100abc,那么我们有100abc呢?实际上,数据库不应该负责删除输入,这应该发生在应用程序中。我不能对您的后续问题给出一个一般性的答案。@Zahreenkan无条件地从列的值和用户输入中删除空格,例如。。。但在任何情况下,您都可能会收到多余的行(令牌字符列表除外)。对于所有用户输入的组合,您可以将
名称
列值和用户输入值转换为小写,替换空格并比较单个字。它给你精确的输出。供你参考:替换函数-
SELECT 
    id
FROM
    `table_name`
WHERE
   LOWER(REPLACE(`name`, ' ', '')) = LOWER(REPLACE('100 abc', ' ', ''));