LoginSignup
2
0

データベースAのテーブルAのカラムAの値がとデータベースBのテーブルBのカラムBに含まれるレコードのみアップデートしたいとき以下のようなクエリを実行したとする

UPDATE [データベースA].[スキーマ].[テーブル名A]
SET [カラムX] = 'hoge'
WHERE
  [カラムA] IN (
    SELECT [カラムB]
    FROM [データベースB].[スキーマ].[テーブル名B]
  )

すると以下のようなエラーが発生することがある

equal to 操作の "japanese_ci_as" と "japanese_xjis_100_ci_as" 間での照合順序の競合を解決できません。

上記のエラーは データベースBの照合順序が"japanese_ci_as"でありデータベースAの照合順序が"japanese_xjis_100_ci_as"に設定されているため起きる

エラー解消のためには データベースBのカラムB から取得した値の照合順序を COLLATE句で"japanese_xjis_100_ci_as"に設定してやればよい

UPDATE [データベースA].[dbo].[テーブル名]
SET [カラムX] = 'hoge'
WHERE
  [カラムA] IN (
    SELECT [カラムB] COLLATE Japanese_XJIS_100_CI_AS --データベースAの照合順序を指定する
    FROM [データベースB].[dbo].[テーブル名B]
  )

参考サイト
https://learn.microsoft.com/ja-jp/sql/t-sql/statements/collations?view=sql-server-ver16

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0