[SQL ] SELECT, 不符合條件的也會運算嗎
資料庫名稱:SQL Server 2008
有一table 為 dbo.ConfigParameter
欄位及資料如下
CategoryType | ParameterValue
(int) | (nvarchar)
-------------------------------------
11 | 101
11 | 102
11 | 103
16 | Validation,Purchase
我想判斷是否存在一筆CategoryType為11且ParameterValue為101
我執行的SQL如下
IF EXISTS (
SELECT 0
FROM (
SELECT ParameterValue
FROM dbo.ConfigParameter
WHERE CategoryType = 11
) v
WHERE CAST(ParameterValue AS int) = 101
)
BEGIN
--blabalbal....
END
我已確定CategoryType為11的ParameterValue必為數字
但是發生錯誤
「將 nvarchar 值 'Validation,Purchase' 轉換成資料類型 int 時,轉換失敗。」
請問即使我用subquery
它還是會對整張table的所有record做運算嗎?
我後來先用temp table解決了
但還是想知道為何原本的寫法不行
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.72.117.101
※ 文章網址: https://www.ptt.cc/bbs/Database/M.1458704007.A.E6A.html
推
03/23 13:43, , 1F
03/23 13:43, 1F
我知道
但是我那個101會寫成一個變數
e.g. ParameterValue = @someValue
而這個@someValue是一個int
這樣變成我要寫成 ParameterValue = CAST(@someValue AS nvarchar)
其實我的重點是想問說
為何我原文中的SQL寫法仍然會去運算所有的record
※ 編輯: whitefur (60.249.58.250), 03/23/2016 18:21:29
推
03/23 20:56, , 2F
03/23 20:56, 2F
Database 近期熱門文章
PTT數位生活區 即時熱門文章