左邊補0
RIGHT('0'是什麼意思?
Select RIGHT(REPLICATE('0', 8) + CAST('12345' as NVARCHAR), 8) as '左邊補零'
, LEFT(CAST('12345' as NVARCHAR) + REPLICATE('0', 8), 8) as '右邊補零'
RIGHT:從右邊數過來取幾個字
LEFT:從左邊數過來取幾個字
SUBSTRING:從左邊數過來的第幾位開始取,往右取幾個字。
循序漸進,把每一步拆開來就知道在幹嘛囉~
看來是補0:
https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=a32c7ddfb2f2fd6a16bfc0d4a5252622
select
DATAALL ,
SUBSTRING(DATAALL,1,4) a,
SUBSTRING(DATAALL,1,4)-1911 b,
CONVERT(VARCHAR(3),SUBSTRING(DATAALL,1,4)-1911) c,
'0'+CONVERT(VARCHAR(3),SUBSTRING(DATAALL,1,4)-1911) d,
RIGHT('0'+CONVERT(VARCHAR(3),SUBSTRING(DATAALL,1,4)-1911),3) e
from ithelp_mssql_20190410
其實SUBSTRING(DATAALL,1,4)
可以寫成LEFT(DATAALL,4)
就好......
至於你說為啥字串可以拿來加減乘除,像MS SQL系統背後會自己偷轉成數字,但Postgre就不行~必須先轉成數字(如下舉例是轉成整數INT),要拿來補0也必須再轉回文字(TEXT)。
https://dbfiddle.uk/?rdbms=postgres_9.6&fiddle=676e137412f398997c50bd74309db86b
是說這種補0我比較習慣用判斷字串長度去補,反正只會有2或3兩種可能嘛~