に一致I内部このデータを用いてカラムVARCHAR [25]を有する:のMySQL REGEXP正数
- 886、-886
- -886
- 0、-1234
- を(空)
数字サイズが1桁からn桁に変わる可能性があります。 と私は
REGEXP '[^-,][0-9]+'
のようなものが、これは-886 88のようにマッチする正規表現
に一致I内部このデータを用いてカラムVARCHAR [25]を有する:のMySQL REGEXP正数
数字サイズが1桁からn桁に変わる可能性があります。 と私は
REGEXP '[^-,][0-9]+'
のようなものが、これは-886 88のようにマッチする正規表現
を少なくとも一つの正の数を持っている任意の行を引っ張るできるようにする必要があります
おそらく、正規表現は
COL not like '-%' AND COL not like '%,-%'
しかし、これは間違ったデータ型に格納する悪い例である必要はありません
は,
を分割して複数の行に保存...そして、あなたはこの質問
この列は 'でも含めることができます0,1,2,3,4,5,6,7,8,9,10,11、-0,1,2,3,4 'となり、複数の列は機能しません。この列の99%には0が含まれているため、別の表はコードの他の部分を複雑にします。 – Fabrizio
@Fabrizio: 'GROUP_CONCAT()'を持つビューはオプションです。 –
あなたの投稿は解決策ではありませんが、それは私に役立ちました: 'NOT LIKE '% - %''は、文字列に負の数が含まれているかどうかを確認する非常に簡単な方法です「すべて、-886」、「886、-886」のような言葉 – Fabrizio
^\ b \ d + \ b $ は正の整数を与えます。
^[^ - ] \ dは+((([^ - ] \ dは+))?)+ $ はあなたにすべての値が正の整数いずれかのリストについては
があるだけのリストを与えます(ただし、すべての正の整数は負または正である)これはチェックアウトすると思います: ^(( - \ d +、)?)+ [^ - ] \ d +((^ - )\ d +)) (、 - \ D +))+ $
はここで正規表現のための素晴らしいサイトです: http://gskinner.com/RegExr/
私はすべての時間のライブテストのためにそれを使用するには?。これを使用して
\ dはMySQLで動作しません、[0-9]を使用する必要があります – Fabrizio
試してみてください。
"[^-\d]\d+\b"
私が正しくあなたの質問を理解している場合に動作するはずです。
良い正規表現参照表:http://www.regular-expressions.info/reference.html
私は最善の解決策を見つけ出すことができました:
`COL` NOT LIKE '%-%'
を
ない私は前にこのことについて考えていなかった理由を確認してください: '、NOT LIKE '% - %が'' – Fabrizio