[解決済み] 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 |
+--------+-----------+----------------+
マルチバイト文字を扱う場合は注意が必要です。
関連
-
[解決済み] SQLの結合形式 - 入れ子になった内側join
-
[解決済み] INNER JOIN ON vs WHERE句
-
[解決済み] INNER JOINよりもCROSS APPLYを使用すべきなのはどのような場合ですか?
-
[解決済み] 最初の行への結合方法
-
[解決済み] カラム名の変更 SQL Server 2008
-
[解決済み] SQL Server の VARCHAR/NVARCHAR 文字列に改行を挿入する方法
-
[解決済み] フラットテーブルをツリーにパースする最も効率的/エレガントな方法は何ですか?
-
[解決済み] SQL Server テーブルからランダムな n 行を選択する
-
[解決済み】countとgroup byを同じselect文で使用する方法
-
[解決済み】Where句を使った左結合
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
executeQuery()ソリューションでデータ操作文を発行できない。
-
[解決済み] SQL Serverで実行中の合計を計算する
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] 各グループの最後のレコードを取得する - MySQL
-
[解決済み] SQL Server の CASE ステートメントで OR がサポートされていない。
-
[解決済み] PostgreSQLで一重引用符で囲まれたテキストを挿入する
-
[解決済み] フラットテーブルをツリーにパースする最も効率的/エレガントな方法は何ですか?
-
[解決済み] SQL Serverで結果をページ分割する最も良い方法は何ですか?
-
[解決済み] Entity Framework VS LINQ to SQL VS ADO.NETでストアドプロシージャを使う?[クローズド]
-
[解決済み] MySQL - 文字列の長さでデータを選択する方法