2017-06-14 5 views
0

ich eine Anwendung mit Entity Framework und meine Datenbankkollatierung ist:So verwenden Sortierfunktion in Update-Abfrage

Latin1_General_CI_AS 

aber Datenbank meines Klienten ist Georgian_Modern_Set_CI_AS. Dies ist ein großes Problem für uns, aber wir haben dieses Problem mit der "Sortierfunktion" gelöst. Wir sammeln unsere Nvarchar-Werte mit Latin1_General_CI_AS wie;

Aber ich habe einige Update-Anweisungen, und ich möchte nur fragen, wie man 'Sortierfunktion' in Update-Abfrage verwenden ??

Haben Sie irgendwelche Ideen?

Dank

+0

Wollen Sie in Ihrer where-Klausel? – SqlWorldWide

+0

@SqlWorldWide es spielt keine Rolle, ich meine, gibt es eine Möglichkeit, Collate-Funktion in Update-Abfrage verwenden? – saulyasar

Antwort

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

Es gibt nur wenige Möglichkeiten, wie Sie Sortierfunktion während des Updates verwenden können.

Einige der Code von here kopiert.

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 

Abgleich

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