顯示具有 MS SQL 標籤的文章。 顯示所有文章
顯示具有 MS SQL 標籤的文章。 顯示所有文章

2021年8月17日 星期二

Views

資料格式轉換

 1. varchar to float

--Num 欄位原資料是varchar格式
SELECT CAST(Num AS FLOAT) as FloatValue
FROM Area

2020年7月22日 星期三

Views

MS SQL Update和其他指令運用

1.Update修改名為M的表格

ABC
A0B06103
A1B12558
A2B26105
A3B33548

目標是撈出C欄位開頭為6且在該欄位前面補上0
update M
  set C='0'+C
where SUBSTRING(c,1,1)='6';

2.Case When運用

IDNameGenderSEX組合
1TristaFnullF
2AmynullFF
3PeterMnullM

目標是新增多一個組合欄位且合併Gender和SEX值
  select * ,組合= case when Gender is not null then Gender 
  else Potter end from M

3.Where 組合欄位運用

IDNameGenderMy=(Name+Gender)
1TristaATristaA
2AmynullAmynull
3PeterMHerryM

目標是要撈出My欄位,且是TristaA
  SELECT ID,My=(Name+Gender) From M
  WHERE (Name+Gender)='TristaA' 
*記得使用Where語句會有順序之分,My欄位是看不到,所所以要使用(Name+Gender)

4.目標要透過join指令去修改值


UPDATE
    tbNew
SET
    tbNew.col1 = PlanB.col1,
tbNew.col2 = PlanB.col2
FROM tbNew
INNER JOIN Plan AS PlanB
ON tbNew.id = PlanB.id
WHERE tbNew.col3 = 'cool'
//表示只有在tbNew是cool的欄位才要修改值
5.目標利用CTE要透過join指令去修改值,移除最後兩個字元
UPDATE Brand
SET
   name = v.name
FROM
     Brand
inner join 
( --類似自我JOIN改資料
  SELECT id, LEFT(name, Len(name)-2) as Name from Brand -- 這個地方是利用CTE方式
   
) v
   ON  Brand.Id = v.id
6.目標利用CTE要透過join指令去修改值,將值前後去掉空白,改成大或小寫
UPDATE Brand
SET name=v.name
FROM 
    Brand
inner join  --大寫                      --小寫
(select id, TRIM(Upper(NAME)) as name1,TRIM(Lower(NAME))as name2 from Brand) v on Brand.Id = v.id

2020年7月13日 星期一

Views

SQL Server資料匯入匯出

1.先在資料庫建立資料表
2.
BULK INSERT test       --test是在資料庫的表格名稱
FROM 'd:\test.csv'     --資料實際路徑
WITH (FIRSTROW = 1,    --從第一列開始
    FIELDTERMINATOR = ',', --CSV分隔符號常為,,預設為\t(定位字元)
 ROWTERMINATOR='\n' --資料檔案的資料列結束字元。 預設的資料列結束字元是 \r\n (新行字元)
 );

3.參考資料1(英文).
   參考資料2(中文).

4.資料匯出到不同目的端

2020年5月20日 星期三

Views

Excel 匯入到Sql Server的方法

1.利用SqlServer內部直接匯入
   https://dotblogs.com.tw/shadow/2014/03/19/144441

2.Bulk Insert 方式
 
BULK INSERT Mytest
        FROM 'C:\Demo\test.txt'
            WITH
    (
                FIELDTERMINATOR = '\t',   --這是預設欄位結束字元
                ROWTERMINATOR = '\n'      --這是預設資料列結束字元
    )
 
  

2020年5月6日 星期三

Views

MS SQL指令整理

1.charindex(指令字元,目標欄位)

例如:
   
idnamepassword
1AmyA001
2PeterA002
3HappyB001
4MerryB002

當sql 語法為 select * from test2

where charindex('2',password)>0

此時模糊比對的資料就是
idnamepassword
2PeterA002
4MerryB002

*****大小寫沒影響。

2.用charindex(想要比對的欄位,目標欄位),來執行字串比對並創新欄位

資料表是test
id比對地址地址比對後欲創造新欄位
1台中市台中市龍興路10號1
2台北縣(102)台北縣大路里100號1
3桃園縣(102)台北縣大路里100號0
4台南市(102)台北縣大路里100號0
select *,比對後欲創造新欄位=case when charindex([比對地址],[地址])>0 then 1
else 0 end from test


3.移除欄位最後字元可用REPLACE,加上轉型Convert

idkg
1100公斤
4100公斤/人
select convert(float,replace(replace(Gender,'公噸/月',''),'公噸','')) as kg from table