对区分大小写的表使视图不区分大小写

时间:2014-08-27 18:02:58

标签: sql sql-server view case-insensitive

如果查看的表(或视图)区分大小写,是否可以使视图不区分大小写?

我查看了一个数据库,该数据库查看区分大小写的另一台服务器(我无法更改)上的视图,并存储在所有大写字母中。我希望我的观点不区分大小写,但我找不到办法。整理仅适用于select语句,因为我无法更改视图以添加排序规则。该表的属性显示它不区分大小写,但它不是。

的结果
exec sp_help 'dbo.myView'

表明排序规则区分大小写。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:0)

CREATE TABLE tb_CollateTest (str varchar(max))
GO

INSERT tb_CollateTest VALUES
  ('Unique')
 ,('uNiQuE')
GO

CREATE VIEW vw_CollateTest AS
SELECT
  str COLLATE SQL_Latin1_General_CP1_CS_AS AS str
FROM tb_CollateTest
GROUP BY str COLLATE SQL_Latin1_General_CP1_CS_AS
GO

SELECT * FROM vw_CollateTest

str
----------
Unique
uNiQuE

(2 row(s) affected)

答案 1 :(得分:0)

只需将COLLATE SQL_Latin1_General_CP1_CI_AS添加到来自远程表的列中。

CREATE VIEW [dbo].[myView] (
   TextColumn1, 
   Column2, 
   TextColumn3)
AS 

   SELECT 
      t.TextColumn1 COLLATE SQL_Latin1_General_CP1_CI_AS,
      t.Column2,
      t.TextColumn3 COLLATE SQL_Latin1_General_CP1_CI_AS
   FROM 
      RemoteServer.dbo.REMOTE_TABLE AS t
GO

<强>参考:

COLLATE (Transact-SQL)