1. ホーム
  2. sql

[解決済み] WHERE条件を文字数で検索するには?

2023-03-15 07:29:52

質問

大量の単語を含むデータベースがありますが、文字の長さが与えられた数字(例では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が正しく指摘したように、あなたはバイト数ではなく文字数を求めている可能性が高いので、私の答えを拡大しようと思いました。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 |
+--------+-----------+----------------+

マルチバイト文字を扱う場合は注意が必要です。