2017-02-17 9 views
0
delete from T_SEARCH_TABLES 
where TABLE_NAME = 'D_VENDOR' 
     and SEARCH_ID in(select distinct htvf.Value 
         from T_RESX_VALUES 
          cross apply dbo.func_split(T_RESX_VALUES.[key],'.') as htvf 
         where T_RESX_VALUES.value like '%Invoices - Activity (%' 
           and htvf.Position = '2' 
           and T_RESX_VALUES.[KEY] like 'SearchName.%' 
        ) 
     and SEARCH_TABLE_ID not in(select SEARCH_TABLE_ID 
           from T_SEARCH_COLUMNS 
           ); 

で動作エラーを与えている:削除クエリがエラーを与えているが、同じ条件が選択

Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value 'SearchName' to data type int.

しかし

select * 
from T_SEARCH_TABLES 
where TABLE_NAME = 'D_VENDOR' 
     and SEARCH_ID in(select distinct htvf.Value 
         from T_RESX_VALUES 
          cross apply dbo.func_split(T_RESX_VALUES.[key],'.') as htvf 
         where T_RESX_VALUES.value like '%Invoices - Activity (%' 
           and htvf.Position = '2' 
           and T_RESX_VALUES.[KEY] like 'SearchName.%' 
         ) 
     and SEARCH_TABLE_ID not in(select SEARCH_TABLE_ID 
          from T_SEARCH_COLUMNS 
          ); 

は問題がそれであるものを正常に動作していますか?

+0

あなたがテーブル・スクリプトを共有することはできますか? –

+0

さて、私の最初の考えはT_RESX_VALUESでしょう。[KEY]は実際には整数です。私はなぜそれが削除の問題であり、selectではなく、わからないのですが、 –

+0

T_RESX_VALUESです。[KEY]はnvarchar(100) –

答えて

2

(T_RESX_VALUES.value like '%Invoices - Activity (%'and htvf.Position = '2') 

が満たされたあなたの内のDELETEとSELECT文の両方で最初の条件、あなたがよろしいですか?

は私が私が私のDB

select * from customers where cust_id = 0 and Cust_Name = 1 

select * from customers where cust_id = 816171 and Cust_Name = 1 

CUST_NAME列がvarchar型である時にこれらの二つの文を実行した

説明しましょう。私のテーブルには、ID = 816171とCUST_NAME =「マイク」で一人の顧客が含まれていますが、= 0

IDとは顧客が私は以下の結果を得なかっ: OK最初のクエリの実行をが、2番目のクエリは行

を返しません次のエラーが返されました:

最初の条件が満たされていない場合、sql-serverは変換をコミットしようとしません。

実際には、SQLが常に同じ順序でwhere句のチェックを実行するわけではないため、エンジン自体が最も最適化された順序を選択します。

あなたはもっとここで読むことができます。 http://rusanu.com/2009/09/13/on-sql-server-boolean-operator-short-circuit/

+0

はい私の条件がデータ要件を満たしていると確信しています –

+0

Selectステートメントは任意の値を返しますか? – jambonick

+0

はいそれは期待どおりです –

関連する問題