# MsSql 快速修改Table定序 ###### tags: `MSSQL` ## 使用以下Select,組出修改Table定序的Script語法 ```sql= --需要先選擇DB,在使用這段Script --如果Column有綁Index、FK、PK ,無法直接跑Script,要從Table>設計>Column屬性去修改 SELECT * from ( SELECT ('ALTER TABLE ' + quotename(TABLE_NAME) + ' ALTER COLUMN ' + quotename(COLUMN_NAME) + ' ' + quotename(DATA_TYPE) + CASE WHEN CHARACTER_MAXIMUM_LENGTH = -1 then '(max)' WHEN DATA_TYPE in ('text','ntext') then '' WHEN CHARACTER_MAXIMUM_LENGTH IS NOT NULL THEN '('+(CONVERT(VARCHAR,CHARACTER_MAXIMUM_LENGTH)+')' ) ELSE isnull(CONVERT(VARCHAR,CHARACTER_MAXIMUM_LENGTH),' ') END +'COLLATE Chinese_Taiwan_Stroke_CI_AS ' + CASE IS_NULLABLE WHEN 'YES' THEN 'NULL' ELSE 'NOT NULL' END) AS script from INFORMATION_SCHEMA.COLUMNS WHERE collation_name='Chinese_Taiwan_Stroke_CS_AI' ) as Test WHERE script != 'NULL' ``` ## 一般來說簡單的定序分類from ### Case sensitivity(CS) 簡單來說就是區分大小寫,A跟a是不同的,如果是Case Insensitive(CI)的話A在排序或者查詢時就會被視為相同,也就是查詢A,連同a也會被查詢到。 ### Accent sensitivity(AS) - 常用 代表的是腔調上的差別,a跟á、o跟ó在腔調上是相同的,那查詢時是要視為相同,如果是的話,那就是Accent Insensitive(AI),如果不是的話就視為Accent sensitive。 ### Kana Sensitivity(KS) 日文中的片假名(Hiragana)與平假名(Katakana)如果被視為相同,那就是Kana Insensitive(KI),反之就是Kane sensitive.。 ### Width sensitivity(WS) 當半形字與全型自被視為相同(A跟A),那就是Width Insensitive(WI),反之就是Width sensitive。 --- ## 定序 在轉換前要先知道定序可分為三部分 ### DataBase定序 幫指定的DataBase作定序,之後產生的Table與Column會依據此這設定來指定預設的定序 ### Table定序 幫指定的Table作定序,之後產生的所有欄位(Column)資料會依據此設定來指定預設的定序 ### Column定序 幫指定的Column作定序,而改筆資料的內容會依據此設定做定序 由上解說可以知道他們三者在預設上有依序繼承的關係,但也可以分別設定