SQL Serverの:リターン以下SQL Serverの:機能評価時間2005
クエリデータなし((0行(複数可)の影響を受ける))、OK。
ただし、行番号3関数呼び出しが有効な場合、クエリは失敗します。
"文字列からdatetimeを変換するときに変換に失敗しました。" Oracleのバックグラウンドから来
- これはちょうど考えられません!
何が起こっているのか教えてください - 間違っているのですか?
SSは最後のステップでSELECTリストの関数呼び出しを評価しません(Oracleのように、または分かりやすいプログラマが行うように)?
select 1 as one --,DATEPART(yyyy,cast(inception_date27 as datetime)) as inception_yr from [DBO].[H5_PREMIUM_DETAIL] dtl, [DBO].[H5_POLICY_MASTER] polmst where polmst.policy_no2 = cast(dtl.arch_master_policy_no41 as numeric) and len(inception_date27) != 8
Here is a small clip I recorded
おかげ
注:私はSSはおよそここで文句こと(一部の行が "0" の代わりに "20110704" を持っている)不良データのルートソースを知っています - なぜJOINからデータが見つからない場合にこの障害が発生するのですか。
ちょうどいいですが、文字列からdatetimeに変換するときに変換が失敗したと言えます。これは、** inception_date27 **列がおそらくdatetimeデータ型に正しく変換できない形式であることを示しています。 – Flimzy
私は質問のポイントは、ゼロ行が返されているので、なぜSql Serverは任意の値をキャストしようとしていると思いますか? –
ここで何か他のことが起こっているかどうかを確認するために、クエリプランを確認すると便利です。 Sql Serverが実際に関数の評価を延期していることを示す簡単な例: 'SELECT CAST( 'xxxx' AS DATETIME)WHERE 1 = 0' –