2009-10-09 13 views
44

私は自分のテーブルにLINKフィールドを持っています。いくつかの行にはリンクがあり、そうでない行もあります。フィールドの "長さ"のMySQL SELECT文は1より大きい

LINKが存在するすべての行を選択したいと思います。 (長さはX文字より大きい)。

どうすればいいですか? MySQLユーザーのために

答えて

86

は約方法:

SELECT * FROM sometable WHERE CHAR_LENGTH(LINK) > 1 

ここMySql string functions page(5.0)です。マルチバイト文字がデータ内に存在する場合、あなたがおそらく彼らが取るどのように多くのバイトのストレージ、そこではありませんどのように多くの文字に興味を持って本当にだとして、私は、CHAR_LENGTH代わりのLENGTHを選んだ

注意。したがって、上記の場合、LINKが単一の2バイト文字である行は返されません。一方、LENGTHを使用すると、LINKは返されません。

LINKNULLの場合、CHAR_LENGTH(LINK)の結果もNULLになるため、行が一致しないことに注意してください。

+0

これはDB2上でも動作することが確認できます。ありがとう@ジョースケート! – Yaniv

+1

その完璧な答えはありがとう:) –

11
select * from [tbl] where [link] is not null and len([link]) > 1 

LENGTH([link]) > 1 
+1

'[identifier]'構文はMS SQL - SQL ServerとAccess(私が知る限り)でのみ使用されます。この質問はMySQLに関するものです。 – dcrosta

+3

私はlen()が有効なMySql関数ではないと考えています – ChssPly76

+0

ああ、ええ、私は完全にその部分を逃しました。この回答はすべて削除する必要がありますか? – Amy

4

試してみてください。

SELECT 
    * 
FROM 
    YourTable 
WHERE 
    CHAR_LENGTH(Link) > x 
5

念の誰でどのようにOracleで見つけたいと(私のように)ここに来た、構文は念の

select length(FIELD) from TABLE 

である;)

関連する問題