[SQL]sql server 7.0不支援collate語法問題

  • 1676
  • 0
  • SQL
  • 2013-01-03

[SQL]sql server 7.0不支援collate語法問題

紀錄一下解決方式

問題描述

原始的SQL在測試環境跑正常,但是在正式環境有問題,程式一上線就出包了…

問題原因

正式環境的相容性層級為SQL server 7.0(70),不支援collate語法 (測試環境為SQL2005(90))

pic1

解決方式

修改SQL如下,可以正常work:


USE foodb
GO

-- 原始的SQL
-- 在測試環境跑可以正式環境有問題
-- 原因:正式環境的相容性層級為SQL 7.0,不支援collate語法 
DECLARE @usrid char(6)
SET @usrid = '123456';

SELECT ROL_ID COLLATE Chinese_Taiwan_Stroke_BIN AS [ROL_ID]
FROM
	fooSC..SC_ROL_USR
WHERE
	USR_ID = @usrid
	AND ROL_ID LIKE '林大貓%'
UNION
SELECT ROL_ID
FROM
	ROLUSR
WHERE
	USR_ID = @usrid
	
-- SQL 7.0寫法
-- 1. 建立table變數
-- 2. 將要查詢的欄位寫入table變數
-- 3. 將table變數與另一個目的表格做運算
DECLARE @usrid char(6)
SET @usrid = '123456';

declare @SC_ROL_USR table
(
 ROL_ID  nvarchar(20)
)

INSERT @SC_ROL_USR
SELECT cast(ROL_ID AS NVARCHAR(20)) AS [ROL_ID]
FROM
	fooSC..SC_ROL_USR
WHERE
	USR_ID = @usrid
	AND ROL_ID LIKE '林大貓%';

SELECT ROL_ID
FROM
	@SC_ROL_USR
UNION
SELECT ROL_ID
FROM
	ROLUSR
WHERE
	USR_ID = @usrid;

參考資料

SQL7.0還原報錯解決方法

在sql2000和7.0的查詢語句中,區分大寫的查詢方法

SQL7.0如何恢复MDF/LDF?