列「Col
」に文字列「geb」が含まれている場合と含まれていない場合があります。それがないとき、私は、次の10個の文字を抽出し、DATETIME
SELECT TOPを使用しない場合の変換エラー
ここにあります私のクエリに変換したい:
;WITH CTE AS
(
SELECT
TOP 100000000
Col,
CONVERT(DATETIME, SUBSTRING(Col, PATINDEX('%geb.%', Col) + 5, 10)) AS bd
FROM
T
WHERE
Col LIKE '%geb.%'
)
SELECT
Col,
bd
FROM
CTE
WHERE
bd <= '01.01.1950'
上記のクエリが正常に動作します。私はTOP xxx
文を省略し、WHERE句は、どのような方法でbd
が含まれている場合(NULL IS、=/=「」、...!)私は、変換エラーを取得:
Conversion failed when converting date and/or time from character string
私はTOP xxx
または削除を含む場合bd
WHERE句からクエリがエラーなしで完了します。
ここでは何が起こっていますか?
が、私はちょうどCTE内でクエリを実行すると、クエリがまだ完了します。 2番目のWHERE句を削除するとCTEの結果が同じで、TOPを使用するかどうかにかかわらず、 – wuha
提案された修正を試すことができます – Winnie
これは、ありがたいことですが、それでも私の質問には答えません。選択/選択の結果セットはどのように異なっていますか?私は今実行計画を見ています。 – wuha