Sql-Server

加入查詢中的文本欄位

  • June 27, 2017

我無法更改表的 DDL,但我需要加入兩個text欄位。我得到一個錯誤

Msg 402, Level 16, State 1, Line 23

數據類型 text 和 text 在 equal to 運算符中不兼容。

下面是說明我的問題的範例 DDL,我該如何克服?

Declare @Table1 Table(id text,name nvarchar(200))
Insert Into @Table1 (id, name) Values
('123', 'Joe'), ('222.00', 'Jim')
Declare @Table2 Table (id text,green nvarchar(200))
Insert Into @Table2 (id, green) Values
('123', 'JDSKLJS'), ('222.00', 'KLJKLJJKL')
Select
*
FROM @Table1 t1
INNER JOIN @Table2 t2
ON t1.id = t2.id

您可以將text欄位轉換為varchar(max)

Declare @Table1 Table(id text,name nvarchar(200))
Insert Into @Table1 (id, name) Values
('123', 'Joe'), ('222.00', 'Jim')
Declare @Table2 Table (id text,green nvarchar(200))
Insert Into @Table2 (id, green) Values
('123', 'JDSKLJS'), ('222.00', 'KLJKLJJKL');

Select
*
FROM @Table1 t1
INNER JOIN @Table2 t2
ON cast(t1.id as varchar(max)) = cast(t2.id as varchar(max))
GO
編號 | 姓名 | 編號 | 綠色 
:----- | :--- | :----- | :--------
123 | 喬 | 123 | JDSKLJS 
222.00 | 吉姆 | 222.00 | KLJKLJJKL

dbfiddle在這裡

引用自:https://dba.stackexchange.com/questions/177412