5

MSSQL データベースがトルコ語の照合順序に設定されていることに問題があります。「Turkish I」の問題により、「i」を含むクエリはどれも正しく機能していません。たとえば、その場合に定義された列「UnitID」を持つ「Unit」というテーブルがある場合、「id」の小文字の「i」が定義された大文字と異なるため、クエリ「select unitid from unit」は機能しなくなります。私は「UnitID」にあります。エラー メッセージは、「列名 'unitid' が無効です」と表示されます。

トルコ語では、文字 i と I が別の文字として認識されるため、これが発生していることはわかっています。しかし、この問題を解決する方法がわかりませんか? DB 内の 1900 個の SP すべてを調べて、「i」の大文字と小文字を修正するオプションはありません。

トルコ語の代わりに使用できるが、それらの文字セットをサポートする他の照合順序の提案も含め、任意の助けをいただければ幸いです。

4

7 に答える 7

1

私はトルコのサポートで非常に多くのシステムを開発しましたが、これはあなたが言ったようによく知られている問題です。

データベース設定を UTF-8 に変更することをお勧めします。それだけです。それはすべての問題を解決するはずです。

(ı-I,i-İ) で大文字と小文字の区別をサポートする場合、SQL Server でのサポートが問題になる可能性があるため、問題が発生する可能性があります。入り口全体が Web からのものである場合は、それも UTF-8 であることを確認してください。

Web UTF-8 入力と SQL Server 設定を UTF-8 のままにしておくと、すべてがスムーズに進むはずです。

于 2009-04-23T10:12:22.950 に答える
0

データベースの照合順序をデフォルトに変更できますか? これにより、すべてのテキスト列がトルコ語の照合順序のままになりますか?

クエリは機能しますが、データは正しく動作します。理論的には...

一時テーブルと varchar 列を持つテーブル変数にはいくつかの問題があります。これらに COLLATE 句を追加する必要があります。

于 2009-04-23T08:07:56.727 に答える
0

問題を解決するためにすべてのストアド プロシージャを実行する必要はないと思いますが、問題を解決するためにリファクタリング ツールを使用しても問題ないかもしれません。SQL Refactorを見てください。私はそれを使用しませんでしたが、有望に見えます。

于 2009-04-23T10:05:52.047 に答える
0

マシンの地域設定を英語 (米国) に変更すると、完全に節約できます。

于 2012-10-05T11:55:07.437 に答える
0

おそらく私はここで問題を理解していませんが、データベースでは大文字と小文字が区別され、クエリでは区別されないため、これはおそらくそうではないでしょうか? たとえば、Sybase では次のことができます。

USE master
GO
EXEC sp_server_info 16
GO

これは、データベースが大文字と小文字を区別しないことを示しています。

attribute_id   attribute_name     attribute_value 
          16   IDENTIFIER_CASE    MIXED
于 2009-04-23T07:52:34.720 に答える
0

使用している照合順序を変更できる場合は、不変ロケールを試してください。ただし、顧客の名前や住所など、他のものに影響を与えないようにしてください。大文字と小文字を区別せずに自分の名前を検索することに慣れている顧客は、ı と I が同等でなくなったり、i と İ が同等でなくなったりすると、気に入らないでしょう。

于 2009-04-23T08:04:35.627 に答える