SQL of SQL Server
5164 ワード
マテリアライズドビュー
update and select
1.クエリー・テーブルのフィールド定義
2.SQL Server大文字と小文字の区別
---データベースの大文字と小文字の設定を表示
---SQL Serverの大文字と小文字を変更
a)列の属性の変更
b)クエリーSQLの変更
c)データベース属性の変更
d)以下のユーザカスタム関数(UDF)を作成する
---文法
参照
理解するPRC_CI_AS NULL
create tableでは、次のような文によく遭遇します.
password nvarchar(10)collate chinese_prc_ci_as null,
それはいったいどういう意味ですか?以下を見てみましょう.
まずcollateは、データベース定義または列定義に適用してソートルールを定義するか、文字列式に適用してソートルール投影を適用するサブ文です.構文は次のとおりです.
collate collation_name
collation_name::={windows_collation_name}|{sql_collation_name}
パラメータcollate_nameは、式、列定義、またはデータベース定義に適用されるソート・ルールの名前です.collation_nameは指定したWindowsだけでいいですcollation_nameまたはSQL_collation_name.
Windows_collation_nameは、Windowsソートルールのソートルール名です.Windowsソートルール名を参照してください.
SQL_collation_nameはSQLソートルールのソートルール名です.SQLソートルール名を参照してください.
ソート・ルールについて簡単に説明します.
ソートルールとは何ですか?MSは、「MicrosoftSQL Server 2000では、文字列の物理的記憶はソート規則によって制御される.ソート規則は、各文字のビットパターンと文字の記憶と比較に使用される規則を指定する」と説明している.
クエリー・アナライザで次の文を実行すると、SQL SERVERでサポートされているすべてのソート・ルールが得られます.
select * from::fn_helpcollations()
ソート・ルール名は、このソート・ルールでサポートされている文字セットを指す2つの部分で構成されています.次のようになります.
Chinese_PRC_CS_AI_WS
前半:UNICコード文字セット、Chinese_PRC_コンチネンタル簡体字UNICodeのソート規則を指します.
ソート・ルールの後半に接尾辞が表示されます.
_BINバイナリソート
_CI(CS)は大文字と小文字を区別するかどうか、CIは区別しない、CSは区別する
_AI(AS)はアクセントを区別するか、AIは区別しないか、ASは区別しない
_KI(KS)は仮名タイプを区別するか、KIは区別しない、KSは区別する
_WI(WS)幅を区別するかどうかWIは区別せず、WSは区別する
大文字と小文字の区別:比較で大文字と小文字を等しくしないようにするには、このオプションを選択します.
アクセントの区別:アクセントと非アクセントの文字を区別する場合は、このオプションを選択します.このオプションを選択すると、比較ではアクセントの異なるアルファベットも等しくありません.
カタカナ:カタカナとひらがなの日本語の音節を比較的に等しくしたい場合は、このオプションを選択します.
≪幅の区別|Division Width|oem_src≫:半角文字と全角文字の比較を等しくしないようにするには、このオプションを選択します.
---SQL Serverでのビュー作成の注意
参照
1.定義にTOPまたはFOR XML演算子が含まれていない限り、order byはクエリ定義で使用できません.
(注:
i.TOPはANSIの標準文ではありません.
ii.ビューは仮想テーブルであり、論理エンティティとしてテーブルのローに順序がなく、外部クエリでローをソートできます)
2.すべての結果列に名前が必要です.だから「SELECT*」という言葉は使わないほうがいいです
3.すべての結果列の名前は一意である必要があります.
基本テーブルのアーキテクチャが変更された場合、ビューのメタデータ情報をタイムリーにリフレッシュし、sp_を使用します.refreshviewは、次の機能を実現します.
exec sp_refreshview 'view_name'
--operation on View coalesce関数
ALTER VIEW view_name WITH SCHEMABINDING AS
SELECT ***
SCHEMABINDING
CREATE UNIQUE CLUSTERED INDEX ivCustomerOrders
ON view_name(col1,col2);
update and select
UPDATE tblSearchOutput SET tblSearchOutput.outputName = tblEntityField.Description
FROM tblEntityField
join tblSearchOutput on tblSearchOutput.EntityFieldId = tblEntityField.EntityFieldId
WHERE tblEntityField.entityId = 1
1.クエリー・テーブルのフィールド定義
SELECT name FROM syscolumns WHERE (id = (SELECT id FROM sysobjects WHERE (name = ' ')))
2.SQL Server大文字と小文字の区別
---データベースの大文字と小文字の設定を表示
exec sp_server_info
“COLLATION_SEQ” “charset=cp936 collation=Chinese_PRC_CI_AS”
---SQL Serverの大文字と小文字を変更
a)列の属性の変更
ALTER TABLE tableA
ALTER COLUMN cola nvarchar(100) COLLATE Chinese_PRC_CS_AS
select * from tableA where cola = 'test'
b)クエリーSQLの変更
select * from tableA where cola collate Chinese_PRC_CS_AS_WS = 'test'
c)データベース属性の変更
alter database COLLATE Chinese_PRC_CS_AS
d)以下のユーザカスタム関数(UDF)を作成する
CREATE FUNCTION StrComp(@Str1 VARCHAR(50),@Str2 VARCHAR(50))
--ALTER FUNCTION StrComp(@Str1 VARCHAR(50),@Str2 VARCHAR(50))
RETURNS INTEGER
AS
BEGIN
DECLARE @i INTEGER
--DECLARE @Str1 VARCHAR(50)
--DECLARE @Str2 VARCHAR(50)
DECLARE @y INT
--SET @Str1='a'
--SET @Str2='A'
SET @i=0
--SELECT ASCII(SUBSTRING(@Str1,@i+1,1))
SET @y=1
DECLARE @iLen INT
SET @iLen = LEN(LTRIM(RTRIM(@Str1)))
IF LEN(LTRIM(RTRIM(@Str1))) < LEN(LTRIM(RTRIM(@Str2))) --THEN
SET @iLen = LEN(LTRIM(RTRIM(@Str2)))
WHILE (@i < @iLen)
BEGIN
IF (ASCII(SUBSTRING(@Str1,@i+1,1))=ASCII(SUBSTRING(@Str2,@i+1,1))) --THEN
SET @i = @i +1
ELSE
BEGIN
SET @y=0
BREAK
END
END
RETURN @y
END
:
select * from Table1 Where dbo.StrComp(Field1,'aAbB') =1
---文法
参照
理解するPRC_CI_AS NULL
create tableでは、次のような文によく遭遇します.
password nvarchar(10)collate chinese_prc_ci_as null,
それはいったいどういう意味ですか?以下を見てみましょう.
まずcollateは、データベース定義または列定義に適用してソートルールを定義するか、文字列式に適用してソートルール投影を適用するサブ文です.構文は次のとおりです.
collate collation_name
collation_name::={windows_collation_name}|{sql_collation_name}
パラメータcollate_nameは、式、列定義、またはデータベース定義に適用されるソート・ルールの名前です.collation_nameは指定したWindowsだけでいいですcollation_nameまたはSQL_collation_name.
Windows_collation_nameは、Windowsソートルールのソートルール名です.Windowsソートルール名を参照してください.
SQL_collation_nameはSQLソートルールのソートルール名です.SQLソートルール名を参照してください.
ソート・ルールについて簡単に説明します.
ソートルールとは何ですか?MSは、「MicrosoftSQL Server 2000では、文字列の物理的記憶はソート規則によって制御される.ソート規則は、各文字のビットパターンと文字の記憶と比較に使用される規則を指定する」と説明している.
クエリー・アナライザで次の文を実行すると、SQL SERVERでサポートされているすべてのソート・ルールが得られます.
select * from::fn_helpcollations()
ソート・ルール名は、このソート・ルールでサポートされている文字セットを指す2つの部分で構成されています.次のようになります.
Chinese_PRC_CS_AI_WS
前半:UNICコード文字セット、Chinese_PRC_コンチネンタル簡体字UNICodeのソート規則を指します.
ソート・ルールの後半に接尾辞が表示されます.
_BINバイナリソート
_CI(CS)は大文字と小文字を区別するかどうか、CIは区別しない、CSは区別する
_AI(AS)はアクセントを区別するか、AIは区別しないか、ASは区別しない
_KI(KS)は仮名タイプを区別するか、KIは区別しない、KSは区別する
_WI(WS)幅を区別するかどうかWIは区別せず、WSは区別する
大文字と小文字の区別:比較で大文字と小文字を等しくしないようにするには、このオプションを選択します.
アクセントの区別:アクセントと非アクセントの文字を区別する場合は、このオプションを選択します.このオプションを選択すると、比較ではアクセントの異なるアルファベットも等しくありません.
カタカナ:カタカナとひらがなの日本語の音節を比較的に等しくしたい場合は、このオプションを選択します.
≪幅の区別|Division Width|oem_src≫:半角文字と全角文字の比較を等しくしないようにするには、このオプションを選択します.
---SQL Serverでのビュー作成の注意
参照
1.定義にTOPまたはFOR XML演算子が含まれていない限り、order byはクエリ定義で使用できません.
(注:
i.TOPはANSIの標準文ではありません.
ii.ビューは仮想テーブルであり、論理エンティティとしてテーブルのローに順序がなく、外部クエリでローをソートできます)
2.すべての結果列に名前が必要です.だから「SELECT*」という言葉は使わないほうがいいです
3.すべての結果列の名前は一意である必要があります.
基本テーブルのアーキテクチャが変更された場合、ビューのメタデータ情報をタイムリーにリフレッシュし、sp_を使用します.refreshviewは、次の機能を実現します.
exec sp_refreshview 'view_name'
--operation on View
create view
Alter view
drop view
SqlServer coalesce , SqlServer2005 , , coalesce , , n , :
:
select Coalesce(null,null,1,2,null)union
select Coalesce(null,11,12,13,null)union
select Coalesce(111,112,113,114,null)
:
1
11
111
case when , , , 。