現在、1つの列(外部キー)がnVarCharであり、たとえば「23 + abcde」の形式のセルで構成されるレガシーデータベースで作業しています.「23」は実際のキーで、残りは何らかの属性です( ?)。
だから私が必要とするのは次のようなものです:
SELECT * FROM table WHERE bad_column = 23;
その '23 +abc' を 23 にキャストする最良の方法は何でしょうか?
現在、1つの列(外部キー)がnVarCharであり、たとえば「23 + abcde」の形式のセルで構成されるレガシーデータベースで作業しています.「23」は実際のキーで、残りは何らかの属性です( ?)。
だから私が必要とするのは次のようなものです:
SELECT * FROM table WHERE bad_column = 23;
その '23 +abc' を 23 にキャストする最良の方法は何でしょうか?
これを試してみてください。この<key>
場合は = 23 です。
SELECT *
FROM TABLE
WHERE SUBSTRING(bad_column,1,LEN(<key>)) NOT LIKE '[a-zA-Z]'
AND SUBSTRING(bad_column,1,LEN(<key>)) = <key>
このようNOT LIKE
に、比較中にキャストは必要ありません (句はリテラルを回避します。他の chars ルールを提供する必要があります)。キーを正確に含む列のみを確実に保持します。
編集:CHARINDEX
仕様も必要ありません。