查询字符长度的条件?

时间:2011-07-24 14:00:30

标签: sql conditional-statements where

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

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

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

3 个答案:

答案 0 :(得分:101)

抱歉,我不确定您正在谈论哪个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正确指出的那样,你很可能想要字符数而不是字节数。谢谢Paulo。

因此,对于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 |
+--------+-----------+----------------+

如果你正在处理多字节字符,请小心。

答案 1 :(得分:3)

我想你想要这个:

select *
from dbo.table
where DATALENGTH(column_name) = 3

答案 2 :(得分:1)

SELECT *
   FROM   my_table
   WHERE  substr(my_field,1,5) = "abcde";