---
# System prepended metadata

title: MsSql 快速修改Table定序
tags: [MSSQL]

---

# 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跟Ａ)，那就是Width Insensitive(WI)，反之就是Width sensitive。

---
## 定序
在轉換前要先知道定序可分為三部分

### DataBase定序

幫指定的DataBase作定序，之後產生的Table與Column會依據此這設定來指定預設的定序

### Table定序

幫指定的Table作定序，之後產生的所有欄位(Column)資料會依據此設定來指定預設的定序

### Column定序

幫指定的Column作定序，而改筆資料的內容會依據此設定做定序

由上解說可以知道他們三者在預設上有依序繼承的關係，但也可以分別設定 