sql - 查询字符长度的WHERE条件?

标签 sql conditional-statements where-clause

我有一个包含大量单词的数据库,但我只想选择那些字符长度等于给定数字的记录(在示例情况 3 中):

$query = ("SELECT * FROM $db WHERE conditions AND length = 3");

但这不起作用...有人可以告诉我正确的查询吗?

最佳答案

抱歉,我不确定您所说的是哪个 SQL 平台:

在 MySQL 中:

$query = ("SELECT * FROM $db WHERE conditions AND LENGTH(col_name) = 3");

在 MSSQL 中

$query = ("SELECT * FROM $db WHERE conditions AND LEN(col_name) = 3");

LENGTH() (MySQL) 或 LEN() (MSSQL) 函数将返回列中字符串的长度,您可以将其用作 WHERE 子句中的条件。

编辑

我知道这确实很旧,但我想我应该扩展我的答案,因为正如 Paulo Bueno 正确指出的那样,您很可能需要字符数而不是字节数。谢谢保罗。

因此,对于 MySQL,有 CHAR_LENGTH()。以下示例突出显示了 LENGTH()CHAR_LENGTH() 之间的区别:

CREATE TABLE words (
    word VARCHAR(100)
) ENGINE INNODB DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;

INSERT INTO words(word) VALUES('快樂'), ('happy'), ('hayır');

SELECT word, LENGTH(word) as num_bytes, CHAR_LENGTH(word) AS num_characters FROM words;

+--------+-----------+----------------+
| word   | num_bytes | num_characters |
+--------+-----------+----------------+
| 快樂    |         6 |              2 |
| happy  |         5 |              5 |
| hayır  |         6 |              5 |
+--------+-----------+----------------+

如果您处理多字节字符,请小心。

关于sql - 查询字符长度的WHERE条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6807231/

相关文章:

sql - 加入时 Postgres 子查询运行极其缓慢

mysql - Laravel Vagrant SQL 备份

MySQL 计数选择查询条件

基于data.table R中列的不等式*滚动*条件的滚动值

MYSQL IN 或多个条件

php - 用户从下拉菜单中选择运算符并在 PHP 函数中使用它

php - 如何比较两个选择?

mysql - SQL 选择上个月的数据

python - 有条件替换 Pandas

sql - 为什么要在字段上使用LEFT JOIN然后在以后的WHERE子句中将其过滤掉?