ZH
通常、2 つのアルファベット文字 ( 、、、、 ... など)SZ
を保持する Varchar2 フィールドがありAI
ます。それをFOOと呼びましょう。
A
特定のデータセットはor A1
-A9
を同じフィールドに保存します。正確にそれらを除くすべての行を選択する必要があります。関数を使用して、数値をAsubstr
から分離しました。これまでのところ、うまくいっているか、 「number-string」で正しく動作していないようです。<
>
数値に変換せずにこれを達成するにはどうすればよいですか? もっと簡単な解決策はありますか?
インターネットで何も見つけられなかったので、自分で試してみると限界に達しました。
これまでのところ、これは私のWHERE 句です。
WHERE (substr(FOO, 0, 1) != 'A'
or (substr(FOO, 0, 1) = 'A' AND substr(FOO, 1, 1) > '9'));
制限なしですべての行を返します。
私が見つけた唯一の解決策:
WHERE (FOO NOT IN ('A', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9'));
A1
しかし、将来どこかで-が発生する場合、これは最適ではありませんA50
。WHERE 句に 51 個の文字列を追加する必要があります。また、クエリがソースコードであるため、コードの可読性も低下します。
このソリューションは、ORACLEとSQL Server で動作するはずです。前もって感謝します