這是今天發生的小問題,情境是我習慣用自己的小工具做一下 txtBox 或 參數的產生,
所以常使用到這段TSQL 來查詢指定 Table 下,有哪一些欄位跟欄位的資訊
所以常使用到這段TSQL 來查詢指定 Table 下,有哪一些欄位跟欄位的資訊
Select
*
From
Information_Schema.Columns
Where
Table_Name =
'Company'
select
*
from
fn_listextendedproperty(
NULL
,
'user'
,
'dbo'
,
'table'
, N
'Company'
,
'column'
,
NULL
)
查出來的結果就如截圖顯示,我就想說兩個都是 Table 形式 (fn 這一各是傳回Table),
那我就把這兩段指令透過共有的欄位 ColumnName 來 INNER JOIN ,這樣我就能一次的查詢,
就獲得整個欄位的全部資料,所以我就下了這段
那我就把這兩段指令透過共有的欄位 ColumnName 來 INNER JOIN ,這樣我就能一次的查詢,
就獲得整個欄位的全部資料,所以我就下了這段
Select
ISC.* ,F.value
From
Information_Schema.Columns
AS
ISC
INNER
JOIN
fn_listextendedproperty(
NULL
,
'user'
,
'dbo'
,
'table'
, N
'Company'
,
'column'
,
NULL
)
AS
F
ON
ISC.COLUMN_NAME = F.objname
Where
ISC.Table_Name =
'Company'
結果出現的畫面不是我想像的成功畫面,而是這段的錯誤訊息
無法解析 equal to 作業中 "Latin1_General_CI_AI" 與 "Chinese_Taiwan_Stroke_CI_AS" 之間的定序衝突。
這讓我想到前段時間 .NET Factory 跟我討論,與其他國家不同系統,部分SQL指令整合的時候,當如果遇到定序問題,
該怎麼處理?兩方如果都無法改定序時或不需要改定序的整合方法,
馬上查SQL線上叢書如何透過修改指令的方式來動態修改目前比對的欄位(INNER JOIN),
使用 COLLATE 子句來將兩邊的定序調整成指定的定序,指令如下:
該怎麼處理?兩方如果都無法改定序時或不需要改定序的整合方法,
馬上查SQL線上叢書如何透過修改指令的方式來動態修改目前比對的欄位(INNER JOIN),
使用 COLLATE 子句來將兩邊的定序調整成指定的定序,指令如下:
Select
ISC.* ,F.value
From
Information_Schema.Columns
AS
ISC
INNER
JOIN
fn_listextendedproperty(
NULL
,
'user'
,
'dbo'
,
'table'
, N
'Company'
,
'column'
,
NULL
)
AS
F
ON
ISC.COLUMN_NAME = F.objname
COLLATE
Chinese_Taiwan_Stroke_CI_AS
Where
ISC.Table_Name =
'Company'
加上 COLLATE 子句就能看到成功顯示的畫面,就能透過這樣的方式,取得欄位資訊與摘要欄位。