SQLServerデータベースを使用してアプリケーションの情報を保存しています。
テーブルの列の1つは、大文字と小文字を区別するデータを格納する必要があります。
テーブル内のこの1つの特定の列で、大文字と小文字を区別するにはどうすればよいですか?
編集:
1)クエリにlinq to sqlを使用します2)ケースセンシティブである必要があるDB情報を格納します
SQLServerデータベースを使用してアプリケーションの情報を保存しています。
テーブルの列の1つは、大文字と小文字を区別するデータを格納する必要があります。
テーブル内のこの1つの特定の列で、大文字と小文字を区別するにはどうすればよいですか?
編集:
1)クエリにlinq to sqlを使用します2)ケースセンシティブである必要があるDB情報を格納します
列レベルで照合をオーバーライドして、大文字と小文字を区別する照合に設定できます。
次のスクリプトは、2つの異なる方法を示しています。
照合Latin1_General_CS_AS
では、CSはCASE 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');
SELECT caseinsensitive
, casesensitive
FROM textvalue
WHERE casesensitive = 'test';
出力:
CASEINSENSITIVE CASESENSITIVE
--------------- -------------
Test test
SELECT caseinsensitive
, casesensitive
FROM textvalue
WHERE caseinsensitive = 'test';
出力:
CASEINSENSITIVE CASESENSITIVE
--------------- -------------
test Test
Test test
TeSt TeSt
答えがあります!以下のリンクをチェックしてください!
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ハッシュを格納し、その列に基づいて検索を実行することもできます。唯一の欠点は、列を更新するたびにハッシュ値を保存する必要があるという事実です。