查询WHERE条件到字符长度?

我有一个大量的单词数据库,但我只想select那些字符长度等于给定的数字的logging(例如情况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子句中用作条件的string的长度。

编辑

我知道这是非常古老的,但我想我会扩大我的答案,因为,正如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 | +--------+-----------+----------------+ 

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

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

我想你想要这个:

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