我有类别(标题(以字母顺序A开头
$sql = "select * from category_data WHERE category LIKE 'A%'";
并且正在工作,但是我如何从数据库中选择不以[A-Z]
开头或仅以符号开头[1-9]
category ( title )
SELECT * FROM category_data WHERE ASCII(UPPER(LEFT(category,1))) IN(...)
您可以在 IN
子句中传递允许的 ASCII 字符。
如果要跳过特定范围,可以使用NOT BETWEEN x AND y;
你可以简单地使用MySQL REGEXP
函数,如
SELECT * FROM `category_data` WHERE `category` REGEXP '^[^a-zA-Z0-9]'
您可以检查第一个字符是否不在字母表中或类似这样的数字:
$sql = "select * from category_data WHERE substr(category,1) NOT LIKE '%[^a-zA-Z]%' AND substr(category,1) NOT LIKE '%[^0-9]%'";
SELECT * FROM category_data WHERE LEFT( category, 1 ) NOT IN ('a','b','c')
在 IN 列表中添加其余的字符
使用 REGEX
$sql = "select * from category_data WHERE category NOT REGEXP '^[^A-Z0-9]'";
这将为您提供不以 A-Z 和 0-9 开头的类别名称
试试这个,如果你不想使用正则表达式
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-z
或 0-9
之间。