Sql Server中將數值型別的末尾0去掉

2021-10-08 20:21:09 字數 1772 閱讀 6592

select

convert(float, isnull(a.value,0))

from work_info as a

where

a...

注意:convert(float,xx)雖然可以去掉小數點後末尾0,但是,當整數部不大於15位數時,小數部顯示個數=15-整數部個數;當整數部大於15位數時,小數部會四捨五入,且顯示科學計數法

eg:select

convert(float ,12345678.123456789000)

, convert(float ,123.1234567896667000)

, convert(float ,123456789333333.1234567896667000)

結果為:

12345678.1234568

123.123456789667

1.23456789333333e15

第一種:(不建議使用)

select

convert(varchar(20),convert(float, isnull(a.value,0))) + isnull(a.unit,'')

from work_info as a

where

a...

注意:①兩個isnull不可省,要不然當其中乙個值為null時,查詢出來值是null

②convert(float,xx)雖然可以去掉小數點後末尾0,但有兩個致命問題,當整數部不大於6位數時,小數部顯示個數=6-整數部個數;當整數部大於6位數時,小數部會四捨五入,且顯示科學計數法

eg:convert(float,2345.6790)-->2345.68;

convert(float,3458888.6789)-->3.45889e+006

③由於單位不是數值,所以用convert(varchar(20),)再拼接單位

第二種:(有點麻煩)

select

isnull(reverse(stuff(reverse(convert(varchar,a.value)),1,patindex('%[1-9]%',reverse(convert(varchar,a.value)))-1,'')), 0)

+ isnull(a.unit, '')

from work_info as a

where

a...

①sql sever裡自帶的reverse函式,這個函式的主要功能是把乙個字元產反轉。

--select reverse('hello,world')

--將得到如下的輸出:dlrow,olleh

②sql sever裡自帶的stuff函式將字串插入到另乙個字串中。 它從第乙個字串的開始位置刪除指定長度的字元;然後將第二個字串插入到第乙個字串的開始位置。

--語法:stuff ( character_expression , start , length , replacewith_expression )

③sql sever裡面有個自帶的patindex函式,返回pattern字串在表示式expression裡第一次出現的位置,起始值從1開始算。

--語法格式:patindex ( '%pattern%' , expression )

--pattern字串在expression表示式裡沒找就返回0,對所有有效的文字和字串就是有效的資料型別。

SqlServer 複製中將大事務分成小事務分發

原文 sqlserver 複製中將大事務分成小事務分發 在sql server 複製中,當在發布資料庫執行1個大事務時,如一次性操作 十萬或百萬以上的資料。當運算元據在發布資料庫執行完成後 日誌讀取器 將掃瞄事務日誌,一次性傳遞到分發資料庫中。若上個事務未傳遞完成,連續執行多個事務,日誌讀取器 將掃...

sqlserver中將查詢結果拼接成字串

for xml path param 將查詢結果以xml格式輸出 select id,name from table1 for xml path path後面沒有引數時,每行資料被預設標籤包裹,每行列資料被被其列名標籤包裹。結果如下 1 holab 2name1 每行資料最外面包裹的標籤由path的...

mysql數值型別

通過mysql手冊對mysql的數值資料型別進行了乙個回顧,總結如下 mysql支援所有標準sql數值資料型別。這些型別包括嚴格資料型別 integer smallint decimal numeric,以及近似數值資料型別 float real double precision。關鍵字int是in...