sql >> データベース >  >> RDS >> Mysql

MySQLで数値を含まない値を検索する

    数値を含まないすべての行を返す必要がある場合は、次のことが役立つ場合があります。

    厳密に言えば、数字は単語やその他の記号で表すことができますが、この記事では「数字」は単に「数字」を意味します。そのため、数字を含まない値を見つけています。

    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            |
    +--------------------------+

    1. SQLを使用してこの日付をテーブルに入力できないのはなぜですか?

    2. Oracleパーティション表

    3. SQL Serverなしで.mdfデータベースにアクセスすることは可能ですか?

    4. Oracle PL/SQLで呼び出し元のプロシージャまたは関数の名前を取得します