0

こんにちは、初めて対処する問題があります。Latin1_General_CS_AS照合(コード 1252)を使用した MS SQL Server データベースがあります。しかし、データは実際にはリトアニア語の 'Lithuanian_CS_AS' (コード 1257) です。データを取得して別のデータベースに書き込み、「通常の」文字列に変換する必要があります-おそらくユニコードです。これが問題の解決に役立つ場合は、SSISも使用しています。

データ:

B×kÑiÖ g. 11-12:

   print ASCII(SUBSTRING(@string, @position, 1)) 
   print CHAR(ASCII(SUBSTRING(@string, @position, 1)))

66  B | 215 × | 107 k | 209 Ñ | 105 i | 214 Ö | 32  | 103 g | 46  . | 32  | 49  1 | 49  1 | 45  - | 49  1 | 50  2

コードのこの ASCII ページhttp://www.ascii-codes.com/cp775.htmlを使用して、次のように変換する必要があります。

結果:

Būkčių g. 11-12

多分変換できるSQLクエリがありますB×kÑiÖ g. 11-12 --> Būkčių g. 11-12か?

これをリトアニア語に変換できる場合は、いくつかのSQLFIDDLESampleData 。これは非常識なので、「リトアニア語」言語の各文字を変換せずに、これを簡単に解決したいと思います:)

より詳しい情報

ソフトウェア(レポート、フォーム)で使用する照合Latin1_General_CS_ASユーザーのデータベース。リトアニア語ですべて問題ありません(正しい文字がどのように表示されるかわかりません)。MS SQL Server 2008 r2 を使用しています。

いつもコンピューターの近くにいるとは限りませんが、すべての質問にお答えできるように努めています。ありがとうございました。

4

2 に答える 2

3

COLLATE句はどうですか?

MSDN から:

選択時の照合の指定

次の例では、単純なテーブルを作成し、4 行を挿入します。次に、この例では、テーブルからデータを選択するときに 2 つの照合順序を適用し、Chiapas がどのように異なる方法で並べ替えられるかを示します。

CREATE TABLE Locations
(Place varchar(15) NOT NULL);
GO
INSERT Locations(Place) VALUES ('Chiapas'),('Colima')
                         , ('Cinco Rios'), ('California');
GO
--Apply an typical collation
SELECT Place FROM Locations
ORDER BY Place
COLLATE Latin1_General_CS_AS_KS_WS ASC;
GO
-- Apply a Spanish collation
SELECT Place FROM Locations
ORDER BY Place
COLLATE Traditional_Spanish_ci_ai ASC;
GO
于 2013-02-12T13:38:25.673 に答える
1

関数を使用することにしました: REPLACE CHAR

私の場合varchar、列のデータ型でした。したがって、Unicode ( nvarchar) ステップで適切な言語の単語に変換するには:

  1. select ステートメントの属性CSを使用して列を Unicode に変換します。AS

SELECT cast(column Collate Latin1_General_CS_AS as nvarchar(22))

2.replaceステートメントを使用して、実際の文字コードに変換します::

REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(cast(column Collate Latin1_General_CS_AS as nvarchar(22)),CHAR(181),N'Ą'), CHAR(208), N'ą'),CHAR(182),N'Č'), CHAR(209), N'č'), CHAR(183), N'Ę'), CHAR(210), N'ę'),CHAR(184), N'Ė'), CHAR(211), N'ė'),CHAR(189), N'Į'),CHAR(212), N'į'), CHAR(190), N'Š'), CHAR(213), N'š'), CHAR(198), N'Ų'), CHAR(214), N'ų'),CHAR(199), N'Ū'), CHAR(215), N'ū'), CHAR(207), N'Ž'), CHAR(216), N'ž')

結果:

|       ¾ilutÓs pl. 83 |       Šilutės pl. 83 |
|         B×kÑiÖ g. 11 |         Būkčių g. 11 |
|          Seni×kÖ km. |          Seniūkų km. |
于 2013-02-26T08:03:42.867 に答える