如何在更新查询中使用Collat​​e功能

时间:2017-06-14 16:20:39

标签: sql sql-server entity-framework

我有一个使用Entity Framework的应用程序,我的数据库排序规则是:

Latin1_General_CI_AS

但我客户的数据库是Georgian_Modern_Set_CI_AS。这对我们来说是一个大问题,但我们用“整理”解决了这个问题。功能。我们将nvarchar值与Latin1_General_CI_AS进行整理,例如;

-- with this function we can easily select the data and get into our application.
select Name collate Latin1_General_CI_AS as Name from Users 

但我有一些更新声明,我只是想问一下如何使用'整理'更新查询中的函数??

你有什么想法吗?

由于

2 个答案:

答案 0 :(得分:1)

The usual form is:
update
set 
from
where x=y collate 'name of collation'

答案 1 :(得分:0)

在更新期间,有几种方法可以使用整理功能。

here

复制的部分代码
CREATE TABLE    #temp1  (
        col1    NVARCHAR(10)    COLLATE Latin1_General_CS_AS
    ,   col2    NVARCHAR(30)    COLLATE Latin1_General_CS_AS
        )
GO

CREATE TABLE    #temp2  (
        col1    NVARCHAR(10)    COLLATE Latin1_General_CI_AS
    ,   col2    NVARCHAR(30)    COLLATE Latin1_General_CI_AS
        )
GO

-- insert sample data
INSERT INTO #temp1  (
        col1
    ,   col2
        )
SELECT  'test1',    'This is test row 1'
UNION ALL
SELECT  'test2',    'This is test row 2'
UNION ALL
SELECT  'test3',    'This is test row 3'
GO

INSERT INTO #temp2  (
        col1
    ,   col2
        )
SELECT  'test1',    'sample data item 1'
UNION ALL
SELECT  'test2',    'sample data item 2'
UNION ALL
SELECT  'test3',    'sample data item 3'
GO

UPDATE
    t2
SET 
    t2.col2 =   t1.col2
FROM 
    #temp1  t1
INNER JOIN 
    #temp2  T2
ON 
    t1.col1=t2.col1 COLLATE Latin1_General_CI_AS

UPDATE
    t2
SET 
    t2.col2 =   t1.col2
FROM 
    #temp1  t1
INNER JOIN 
    #temp2  T2
ON 
    t1.col1=t2.col1 COLLATE DATABASE_DEFAULT 

UPDATE
    t2
SET 
    t2.col2 =   t1.col2 
FROM 
    #temp1  t1
INNER JOIN 
    #temp2  T2
ON 
    t1.col1 COLLATE DATABASE_DEFAULT  =t2.col1 

清理

-- clean up
DROP TABLE  #temp1
GO
DROP TABLE  #temp2
GO