首页 文章

查询字符长度的条件?

提问于
浏览
52

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

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

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

3 回答

  • 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子句中的条件 .

    Edit

    我知道这已经很老了,但我认为我会扩展我的答案,因为正如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 |
    +--------+-----------+----------------+
    

    如果您正在处理多字节字符,请小心 .

  • 91

    我想你想要这个:

    select *
    from dbo.table
    where DATALENGTH(column_name) = 3
    
  • 1
    SELECT *
       FROM   my_table
       WHERE  substr(my_field,1,5) = "abcde";
    

相关问题