Pages

Thursday, 7 March 2013

Mengganti Collation di SQL

Muncul error seperti di bawah ini, ketika mencoba untuk menggabungkan dua table di database.

Error Executing Database Query.
[Macromedia][SQLServer JDBC Driver][SQLServer]Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Thai_CI_AS" in the equal to operation.
 



Analisa Error

Error ini disebabkan karena Collationnya berbeda, yang satu SQL_Latin1_General_CP1_CI_AS dan yang lainnya Thai_CI_AS. 

Untuk memastikannya, kita bisa melihat tipe Collationnya dengan  menggunakan perintah :
sp_help [namaTable]

Maka akan tampil hasil seperti ini :
Coloumn_name Type Computed Lenght Prec Scale Nullable TrimTrailingBlanks FixedLenNullnSource Collation
user_id varchar no 50 - - yes no yes Thai_CI_AS


Mengatasi Error

Untuk mengatasi error ini, bisa dilakukan dengan dua cara :
  1. Collation disamakan pada saat melakukan query dengan menambahkan perintah
  2. SELECT USER.* FROM USER, REQUEST WHERE USER.USER_ID collate SQL_Latin1_General_CP1_CI_AS = REQUEST.USER_ID
  3. Mengganti Collation pada field yang mau di compare
  4. alter table [dbo].[user] alter column [user_id] varchar(50) collate SQL_Latin1_General_CP1_CI_AS NULL


3 comments: