2

SQLServerデータベースを使用してアプリケーションの情報を保存しています。

テーブルの列の1つは、大文字と小文字を区別するデータを格納する必要があります。

テーブル内のこの1つの特定の列で、大文字と小文字を区別するにはどうすればよいですか?

編集:

1)クエリにlinq to sqlを使用します2)ケースセンシティブである必要があるDB情報を格納します

4

2 に答える 2

6

列レベルで照合をオーバーライドして、大文字と小文字を区別する照合に設定できます。

次のスクリプトは、2つの異なる方法を示しています。

  1. テーブル作成中に照合を設定します。
  2. ALTERステートメントを使用して既存の列の照合を設定します。

照合Latin1_General_CS_ASでは、CSCASE SENSITIVE

SQL Serverの照合について詳しくは、こちらをお読みください。

テーブルの作成中に照合を設定する

照合を使用してスクリプトを作成する

CREATE TABLE textvalue
(
     caseinsensitive  VARCHAR(30)
  ,  casesensitive    VARCHAR(30)
        COLLATE Latin1_General_CS_AS
);

テーブル変更中に照合を設定する

照合なしでスクリプトを作成する

CREATE TABLE textvalue
(
     caseinsensitive  VARCHAR(30)
  ,  casesensitive    VARCHAR(30)
);

スクリプトを変更して照合を設定します

ALTER TABLE textvalue
    ALTER COLUMN casesensitive VARCHAR(30)
    COLLATE Latin1_General_CS_AS;

テストデータで示すサンプル

テーブルスクリプトを入力します

INSERT INTO textvalue (caseinsensitive, casesensitive) VALUES
  ('test', 'Test'),
  ('Test', 'test'),
  ('TeSt', 'TeSt');

大文字と小文字を区別する列でのスクリプト検索:SQLFiddleデモ

SELECT  caseinsensitive
    ,   casesensitive  
FROM    textvalue 
WHERE   casesensitive = 'test';

出力

CASEINSENSITIVE  CASESENSITIVE
---------------  -------------
Test             test

大文字と小文字を区別しない列でのスクリプト検索:SQLFiddleデモ

SELECT  caseinsensitive
    ,   casesensitive  
FROM    textvalue 
WHERE   caseinsensitive = 'test';

出力

CASEINSENSITIVE  CASESENSITIVE
---------------  -------------
test             Test
Test             test
TeSt             TeSt
于 2012-05-05T23:12:40.530 に答える
1

答えがあります!以下のリンクをチェックしてください!

http://blog.sqlauthority.com/2007/04/30/case-sensitive-sql-query-search/

以下の答えは確かに代替手段ですが、実際には、個々のSQLServer列で大文字と小文字を区別するパラメーターを設定できます。

MD5ハッシュは文字列ごとに一意であるため、もう1つできることは、値をMD5ハッシュと比較することです。

// md5 hash is unique for TEST, and test
SELECT * FROM table WHERE MD5(column) = MD5("TEST") // Hash : 033bd94b1168d7e4f0d644c3c95e35bf
SELECT * FROM table WHERE MD5(column) = MD5("test") // Hash : 098f6bcd4621d373cade4e832627b4f6

インデックス作成に問題があるかもしれませんが、一見の価値があります:)または、column_md5などの列の横にmd5ハッシュを格納し、その列に基づいて検索を実行することもできます。唯一の欠点は、列を更新するたびにハッシュ値を保存する必要があるという事実です。

于 2012-05-05T23:04:52.547 に答える