sql server 補齊0學習總結

2021-07-25 12:46:49 字數 2484 閱讀 9294

角本如下:

/****** script for selecttopnrows command from ssms  ******/

select top 1000 [id]

,[sn]

,[name]

from [edudb].[dbo].[testtab]

select right('0123456',sn) from testtab;

select right(replicate('0',5)+cast(sn as varchar(10)),5) as 'sn' from testtab;

select right('00000000'+cast(sn as varchar(10)),5) as 'sn' from testtab

複製**

效果如下:

*****===

select 

right(cast('000000000'+convert(int,code)as varchar(20)),10),code,

id,pydate,isnull(lzdate,'9999-12-31'),0 

from zlemployee  

工號的型別是int的,請問為什麼用id就可以呢?為什麼用code就不行了?

已經搞定了,一定在臨時表中char轉int,不能直接轉

咱們來看:

1cast('000000000'+convert(int,code)as varchar(20))

首先:convert(int,code) :你把code 轉為 int

然後'000000000'+convert(int,code)我估計sqlserver肯定把表示式作為數字相加了,那麼0000...的相加就沒有作用了。

最後就不是你要的結果了。

大致應該這樣:12

34select 

right(cast('000000000'+rtrim(code) as varchar(20)),10),code,

id,pydate,isnull(lzdate,'9999-12-31'),0 

from zlemployee

*****===

請教,我想將乙個字段值在sql語句中,自動補齊位數,是否可以做到,有這樣的函式麼?

比如為 3時,

select 的結果是 '003',

為333時,結果就是 '333'

這樣在sql裡,能否直接做到呢??

update 表 set 字段 = right('000' + cast(字段 as varchar),3)

select right('000' + cast(col as varchar(10),3) as col from [table]

*****===

select right('0000'+cast( '123'  as nvarchar(50)),4) dwbh

公式 right('位數'+cast(要判斷的字段 as nvarchar(50)),位數 )

*****===

select right('00000'+'1',5)

問題:需要格式為00001、00002、00003、00004 ... 00010 ... 00100 ...

思路:用5個長度的00000,去拼接後面自增的數字(必須轉為字元),然後從右側開始擷取5個長度。

*****===

oracle:lpad函式

[sql] view plain copy

語法格式如下:  

lpad( string, padded_length, [ pad_string ] )  

string  

準備被填充的字串;  

padded_length  

填充之後的字串長度,也就是該函式返回的字串長度,如果這個數量比原字串的長度要短,lpad函式將會把字串擷取成從左到右的n個字元;  

pad_string  

填充字串,是個可選引數,這個字串是要貼上到string的左邊,如果這個引數未寫,lpad函式將會在string的左邊貼上空格。  

例項:[sql] view plain copy

select lpad(22,10,'0') from dual;  

結果:  

1   0000000022  

sqlserver:right函式

語法right(string, length)

right 函式的語法具有下面的命名引數:

部分說明

string

必要引數。字串表示式,從中最右邊的字元將被返回。如果 string 包含 null,將返回 null。

length

必要引數;為 variant (long)。為數值表示式,指出想返回多少字元。如果為 0,返回零長度字串 ("")。如果大於或等於 string 的字元數,則返回整個字串。 示例:

right(replicate('0',10)+ltrim(引數),10)

*****===

Oracle和SQLServer補齊字串的方法

oracle lpad函式 語法格式如下 lpad string,padded length,pad string string 準備被填充的字串 padded length 填充之後的字串長度,也就是該函式返回的字串長度,如果這個數量比原字串的長度要短,lpad函式將會把字串擷取成從左到右的n個字...

空白單元格怎麼用0補齊

空白單元格用0補齊的方法 首先開啟excel 選中要填充為0的 然後點選 ctrl g 快捷鍵,調出定位對話方塊 接著選擇空值選項按鈕 最後在單元格中輸入數字0,並按住ctrl鍵不放即可。在電腦端開啟excel 選中要填充為0的 如下圖所示。在選中 之後點選ctrl g快捷鍵,調出定位對話方塊。在彈...

fread總返回0的問題

size t fread void ptr,size t size,size t nmemb,file stream 這個函式以前一直沒理解為什麼 size t size,size t nmemb引數來確定讀取緩衝區的大小,我開始以為兩個可以互換,而且在有些場合互換確實也沒問題,直到今天碰到了開啟乙...