回答:
SQL Serverを使用している場合は、LEN(長さ)関数を使用します。
SELECT EmployeeName FROM EmployeeTable WHERE LEN(EmployeeName) > 4
それのためのMSDNは述べています:
末尾の空白を除いて、指定された文字列式の文字数を返します。
oracle / plsqlではを使用できますがLength()、mysqlではLengthも使用します。
Oracleのドキュメントは次のとおりです。
http://www.techonthenet.com/oracle/functions/length.php
そしてこれがのMySQLドキュメントですLength(string):
http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_length
PostgreSQLの場合、length(string)またはを使用できますchar_length(string)。PostgreSQLのドキュメントは次のとおりです。
http://www.postgresql.org/docs/current/static/functions-string.html#FUNCTIONS-STRING-SQL
JonHは、クエリの記述方法について非常によく説明しています。ただし、言及しなければならない重要な問題がもう1つあります。これは、そのようなクエリのパフォーマンス特性です。ここで繰り返しましょう(Oracleに適応):
SELECT EmployeeName FROM EmployeeTable WHERE LENGTH(EmployeeName) > 4;
このクエリは、制限された列の値に適用される関数の結果(適用した結果LENGTHに関数をEmployeeNameカラム)。Oracleでは、おそらく他のすべてのRDBMSでも、これはEmployeeNameの通常のインデックスがこのクエリに応答するのに役に立たないことを意味します。データベースは全表スキャンを実行しますが、これは非常にコストがかかる可能性があります。
ただし、さまざまなデータベースには、このようなクエリを高速化するように設計された関数インデックス機能があります。たとえば、Oracleでは、次のようなインデックスを作成できます。
CREATE INDEX EmployeeTable_EmployeeName_Length ON EmployeeTable(LENGTH(EmployeeName));
ただし、インデックスは条件に対してあまり選択的ではない可能性があるため、これはあなたのケースではまだ役に立ちません。これは、次のことを意味します。名前の長さが4を超える行を要求しているとします。そのテーブルの従業員名の80%が4よりも長いと仮定しましょう。さて、データベースはおそらく(とにかく、テーブルのほとんどのブロックを読み取る必要があるため、インデックスを使用する価値はありません。
ただし、クエリをLENGTH(EmployeeName) <= 4、またはLENGTH(EmployeeName) > 35に変更した場合、5文字未満または35文字を超える名前を持つ従業員が非常に少ないと想定すると、インデックスが選択され、パフォーマンスが向上します。
とにかく、要するに、作成しようとしているクエリのようなクエリのパフォーマンス特性に注意してください。
ANDステートメントを追加しますSELECT city FROM student.zipcode WHERE LENGTH(city) >= 4 AND LENGTH(city) <= 9;