SQL of SQL Server


マテリアライズドビュー

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
  • coalesce関数
  • 
    
    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       ,         ,      ,         。