的行爲我有一個查詢:更改列的數據類型更改查詢
SELECT [Theme].[PK_Theme], [Theme].[Name], [ThemeType].[Type]
FROM [Theme]
LEFT OUTER JOIN [ThemeType]
ON [Theme].[ThemeTypeId] = [ThemeType].[PK_ThemeType]
JOIN [ProductTheme] ON [ProductTheme].[ThemeId]=[Theme].[PK_Theme]
WHERE ProductTheme.ProductID LIKE '%'
AND ProductTheme.ThemeId = Theme.PK_Theme
AND COALESCE([THEME].[THEMETYPEID], 'null') LIKE '%'
GROUP BY [Theme].[Name], [ThemeType].[Type], [Theme].[PK_Theme]
ORDER BY CASE WHEN [ThemeType].[Type] IS NULL THEN 0 ELSE 1 END, [Theme].[Name]
的原因LIKE
s爲有因爲'%'
使用asp.net服務器控件實際上是參數化。
這個查詢結果如下:
你不能看到所有返回的數據,但[Theme].[Name]
是按字母順序排列兩個部分,第一個內,其中[ThemeType].[Type]
是NULL
那麼它不爲空。 [Theme].[PK_Theme]
是與[Theme].[Name]
關聯的主鍵。
表的關聯方式是該主題有一個名爲ThemeTypeId
的列,它是ThemeType
表中主鍵的外鍵。
現在這是我的問題,目前ThemeTypeId
是VARCHAR(50)
數據類型,我需要它是INT
。我看到的問題是:
COALESCE([THEME].[THEMETYPEID], 'null')
這將導致以下錯誤:varchar
價值'NULL'
轉換爲數據類型int
當
轉換失敗。
但是,如果我將null
更改爲NULL
則不返回任何內容,如果將其更改爲0,則只返回如上所述返回的NULL和非空值。我該怎麼做呢?
在合併之後,即使它是一個int,你仍然在放置'like'%'嗎? –
目前,是...這是不正確的?你將如何返回所有值在整數 –
我會想出一個可能的答案,但不知道你的服務器控制,我懷疑我會第一次100%得到它;隨時提出改進意見。 –