2011-07-24 2 views
44

は、私は言葉数の多いデータベースを持っているが、私は文字長は、(例えば、ケース3)で与えられた数に等しいレコードだけを選択します:どこの文字の長さを問い合わせるのですか?

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

をしかし、これは動作しません。 ..誰か私に正しいクエリを表示できますか? 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の)

答えて

79

申し訳ありませんが、私はあなたが話しているどのSQLプラットフォームわかりませんでしたまたはLEN()(MSSQL)関数は、WHERE句の条件として使用できる列の文字列の長さを返します。

編集

私は、これは本当に古いです知っているが、パウロ・ブエノが正しく指摘したように、あなたは多くのとは対照的に、最も可能性の高い文字の数を望んだ、ので、私は私の答えを拡張しようと思いましたバイト。パウロに感謝します。

したがって、MySQLにはCHAR_LENGTH()があります。次の例では、CHAR_LENGTH()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

MySQLの構文はSQLiteの構文と同じですdbo.table から 。私のためにうまくいった。 – Jon

+3

ポストグルでは、mysqlのような "長さ"の関数を使うことができます –

+2

注意!マルチバイト文字セットでは、これは異なる場合があります。 [this](http://stackoverflow.com/questions/1870937/mysql-how-to-select-data-by-string-length) –

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

私はあなたがしたいと思います。この:

選択* DATALENGTH(COLUMN_NAME)= 3

関連する問題