0

このタイプのセットアップに最適な世界では、数値のみを期待する整数列があります。

しかし、列があり、次のような句varcharを追加したい場合はどうでしょうか。WHERE

WHERE <value> is NOT a number

本質的に、数字だけではない文字を含むすべての行を選択しています。

これはMySQL用です。

4

4 に答える 4

4

これを試して

    SELECT * FROM myTable WHERE concat('',col1 * 1) != col1

ここでデモ

于 2013-10-07T17:39:18.777 に答える
3

REGEXPまたはRLIKEあなたの友達ですか:

SELECT * FROM `MyTable` WHERE `Column` RLIKE '^[^0-9]*$';

UPDv1:

負の整数を検出するために、さまざまな正規表現を使用できます。

SELECT
'-2' RLIKE '^[^0-9]*$', -- fails
'-1' RLIKE '-[0-9]';    -- succeeds

例えば:

SELECT * FROM `MyTable` WHERE `Column` RLIKE '-[0-9]' OR `Column` RLIKE '^[^0-9]*$';

これでテスト:

SELECT 
    *
FROM
    (
        SELECT 'abs 12 x' as `Column`
        UNION ALL
        SELECT 12
        UNION ALL
        SELECT -2
        UNION ALL
        SELECT '-x'
    ) as `sub`
WHERE
    `Column` RLIKE '-[0-9]'
    OR
    `Column` RLIKE '^[^0-9]*$';

出力:

-2
-x
于 2013-10-07T17:38:21.517 に答える