按资本或小写字母搜索单词

时间:2014-02-27 06:34:18

标签: php mysql sql

我在数据库中有两个值,如

  1. This is Name
  2. this is a name
  3. 我正在通过SQL查询

    搜索短语th
    SELECT * FROM [TABLE_NAME] WHERE title LIKE '%th%'
    

    然后两个字段都显示我只想显示this is a name部分。我该怎么办?我试过preg_merge和其他部分,但它们没有用。是否有distinguish capital and small letter的SQL查询。或任何PHP方法,我可以通过它搜索确切的术语。我的表格式是UTF8。不是拉丁将军。

4 个答案:

答案 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'”);