我在数据库中有两个值,如
This is Name
this is a name
我正在通过SQL查询
搜索短语th
SELECT * FROM [TABLE_NAME] WHERE title LIKE '%th%'
然后两个字段都显示我只想显示this is a name
部分。我该怎么办?我试过preg_merge和其他部分,但它们没有用。是否有distinguish capital and small letter
的SQL查询。或任何PHP方法,我可以通过它搜索确切的术语。我的表格式是UTF8。不是拉丁将军。
答案 0 :(得分:4)
SELECT * FROM tableName WHERE title COLLATE latin1_general_cs LIKE '%th%'
<强> Reference 强>
默认字符集和排序规则是latin1和latin1_swedish_ci,因此非二进制字符串比较默认情况下不区分大小写。这意味着如果使用col_name LIKE'a%'进行搜索,则会获得以A或a开头的所有列值。要使此搜索区分大小写,请确保其中一个操作数具有区分大小写或二进制排序规则。例如,如果要比较具有latin1字符集的列和字符串,则可以使用COLLATE运算符使任一操作数具有latin1_general_cs或latin1_bin排序规则:
更重要的是
如果希望始终以区分大小写的方式处理列,请使用区分大小写或二进制排序规则来声明它。请参见第13.1.10节“CREATE TABLE语法”。
答案 1 :(得分:3)
它适合您,尝试此查询
SELECT * FROM table_name WHERE BINARY title LIKE '%th%'
答案 2 :(得分:2)
这是一种选择以小写字母开头的单词的方法。
此查询通过函数LOWER()检查第一个字符是否为小写,以及后面的字符是否为具有相同函数LOWER()的小写字母。
如果您想确保以下所有字符均为小写,则可以使用LOWER(SUBSTRING(单词FROM 2))
SELECT title
FROM [TABLE_NAME]
WHERE (SUBSTRING(title, 1, 1) COLLATE latin1_bin) = LOWER(SUBSTRING(title, 1, 1))
AND (SUBSTRING(title, 2, 1) COLLATE latin1_bin ) = LOWER(SUBSTRING(title, 2, 1))
答案 3 :(得分:1)
$ keywords ='%'。strtolower($ _ GET ['q'])。 '%';
$ sql = mysql_query(“SELECT * FROM items WHERE LOWER(item_code)LIKE'$ keywords'”);