选择以符号开头的值的最佳方法

时间:2015-10-13 09:37:43

标签: php mysql sql

我的分类(标题)以字母A开头

$sql = "select * from category_data WHERE category LIKE 'A%'";

并且正在运作,但我如何从数据库中选择category ( title )不以[A-Z][1-9]开头的符号

6 个答案:

答案 0 :(得分:2)

SELECT * FROM category_data WHERE ASCII(UPPER(LEFT(category,1))) IN(...)

您可以在IN子句中传递允许的ASCII个字符。

如果您想跳过特定范围,可以使用NOT BETWEEN x AND y;

答案 1 :(得分:1)

你可以简单地使用MySQL的REGEXP功能,如

SELECT * FROM `category_data` WHERE `category` REGEXP '^[^a-zA-Z0-9]'

答案 2 :(得分:0)

您可以检查第一个字符是否不在字母或数字中:

$sql = "select * from category_data WHERE substr(category,1) NOT LIKE '%[^a-zA-Z]%' AND substr(category,1) NOT LIKE '%[^0-9]%'";

答案 3 :(得分:0)

使用REGEX

 $sql = "select * from category_data WHERE category NOT REGEXP '^[^A-Z0-9]'";

这将为您提供不以A-Z和0-9

开头的类别名称

答案 4 :(得分:0)

SELECT * FROM category_data WHERE LEFT( category, 1 ) NOT IN ('a','b','c')

//在IN列表中添加剩余的char

答案 5 :(得分:0)

如果您不想使用正则表达式

,请尝试此操作
SELECT * FROM category_data WHERE 
    (LEFT(category, 1) NOT BETWEEN 'a' AND 'Z') AND
    (LEFT(category, 1) NOT BETWEEN 0 AND 9);

LEFT(category, 1)抓取category列的第一个字符,并确认它不在a-z0-9之间。