数値を含まないすべての行を返す必要がある場合は、次のことが役立つ場合があります。
厳密に言えば、数字は単語やその他の記号で表すことができますが、この記事では「数字」は単に「数字」を意味します。そのため、数字を含まない値を見つけています。
Products
というテーブルがあるとします。 ProductName
に次のデータが含まれています 列:
SELECT ProductName
FROM Products;
結果:
+-------------------------------------+ | ProductName | +-------------------------------------+ | Left handed screwdriver | | Right handed screwdriver | | Long Weight (blue) | | Long Weight (green) | | Smash 2000 Sledge Hammer | | Chainsaw (Includes 5 spare fingers) | | Straw Dog Box | | Bottomless Coffee Mugs (4 Pack) | +-------------------------------------+>
この列には文字データが含まれていますが、一部の行にはその文字データ内に数値が含まれています(数値型として保存されていない場合でも)。
次のクエリを使用して、数字を含まない行のみを返すことができます。
SELECT ProductName
FROM Products
WHERE ProductName NOT REGEXP '[0-9]+';
結果:
+--------------------------+ | ProductName | +--------------------------+ | Left handed screwdriver | | Right handed screwdriver | | Long Weight (blue) | | Long Weight (green) | | Straw Dog Box | +--------------------------+
予想どおり、数値を含まない行のみが返されます。
ここでは、MySQLのNOT REGEX
を使用しました パターンに一致するすべての行を検索する関数。パターンには、0
からのすべての数字が含まれます 9
へ 、およびその他の文字。
これは次のように書くこともできます:
SELECT ProductName
FROM Products
WHERE NOT (ProductName REGEXP '[0-9]+');
結果:
+--------------------------+ | ProductName | +--------------------------+ | Left handed screwdriver | | Right handed screwdriver | | Long Weight (blue) | | Long Weight (green) | | Straw Dog Box | +--------------------------+