0

現在、1つの列(外部キー)がnVarCharであり、たとえば「23 + abcde」の形式のセルで構成されるレガシーデータベースで作業しています.「23」は実際のキーで、残りは何らかの属性です( ?)。

だから私が必要とするのは次のようなものです:

SELECT * FROM table WHERE bad_column = 23;

その '23 +abc' を 23 にキャストする最良の方法は何でしょうか?

4

4 に答える 4

0

これを試してみてください。この<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仕様も必要ありません。

于 2013-04-17T09:08:45.390 に答える