❶ sqlserver中如何把字元串轉換成數字
SQL Server中的數值類型分為兩種,一種是精確的數值類型,具體的數據類型有:bit、tinyint、smallint、int、bigint、smallmoney、money和decimal,這些數據類型能夠精確的表明某以數值;另一種是近似的數值類型,具體就是float和real。浮點數據為近似值,因此,並非數據類型範圍內的所有值都能精確地表示。x0dx0a有些時候我們需要將這些數值類型轉換為字元串類型,用到的轉換函數就是cast和convert,這兩個函數的作用都是進行類型轉換,只不過語法格式不同。據說在轉換時還是有一定的區別的,不過我個人更習慣於使用convert函數,應該這個函數一方面更像是個函數的語法,另一方面在做時間和數值轉換成字元串時還可以指定轉換的格式。x0dx0a對於精確數值的數據類型,轉換出來的字元串就是我們存儲的數值。比如:x0dx0adeclare @i intset @i=123456789x0dx0aprint 'test:'+convert(varchar(20),@i)x0dx0a輸出就是:test:123456789x0dx0a而如果對於近似數值的數據類型,那麼可就沒有那麼簡單了。x0dx0adeclare @i floatset @i=123456789x0dx0aprint 'test:'+convert(varchar(20),@i)x0dx0a輸出結果:test:1.23457e+008x0dx0a輸出的結果是使用科學計數法來表示的,再看看可否通過指定轉換樣式來指定不使用科學計數法呢?幫助文檔中說到float 或 real 轉換為字元數據時的 style 值:x0dx0a0(默認值)最大為 6 位數。根據需要使用科學記數法。x0dx0a1 始終為 8 位值。始終使用科學記數法。x0dx0a2 始終為 16 位值。始終使用科學記數法。x0dx0a我們的值是123456789,超過了6位數.所以不管是0還是1,2結果都會使用科學計數法來表示。那麼要怎麼樣才能將我們的數據不轉換成科學計數法而輸出呢?比較簡單的辦法就是將近似數據轉換為精確數據,然後再將精確數據轉換成字元串。x0dx0a同樣以上面的例子為例, 進行兩次數據類型的轉換如下:x0dx0adeclare @i floatset @i=123456789x0dx0aprint 'test:'+convert(varchar(20),convert(int,@i))x0dx0a輸出:test:123456789如果是有小數,那麼我們要轉換出小數位的話,可以轉換成decimal,轉換出的小數位數在定義decimal時指定。比如要輸出4位小數,那麼轉換代碼是:x0dx0adeclare @i floatset @i=123456789.12x0dx0aprint 'test:'+convert(varchar(20),convert(decimal(18,4),@i))x0dx0a輸出:test:123456789.1200
❷ 資料庫欄位補'0'
寫個函數:
CREATE Function xfn_UpdateZero(@Str VARCHAR(20),@Len INT)
RETURNS VARCHAR(20)
AS
BEGIN
DECLARE @ALEN INT
SET @ALEN=0
WHILE @ALEN<@Len-1
BEGIN
SET @Str='0'+@Str
SET @ALEN=@ALEN+1
END
RETURN @Str
END
然後更新欄位值:
update table_name set 欄位名=dbo.xfn_UpdateZero(欄位名,5)
這樣這個欄位的所有數據長度都變成了5
(PS:前提是這個欄位中不可以有值的長度大於五位,否則這個值不會更新)
❸ sql語句問題 在一組數字前面加一個0
如果該列是char或者varchar類型 直接:
update 表名
set 列名='0'+列名
就可以.
如果該列是數值型,可以用
update 表名
set 列名='0'+ltrim(rtrim(str(列名)))
❹ sql 字元轉換數值
select cast('12.5' as float)
select convert(float,'12.5')
這兩種方法在MS SQL中效果是一樣的,
但前者可以直接移植到ORACLE中使用.
❺ SQL 中怎麼把字元串轉換為數字
可以使用函數:ISNUMERIC
當輸入表達式得數為一個有效的整數、浮點數、money 或 decimal 類型,那麼 ISNUMERIC 返回 1;否則返回 0。返回值為 1 確保可以將 expression 轉換為上述數字類型中的一種。
將字元的數字轉成數字,比如'0'轉成0可以直接用加法來實現;
若絕對比較可以這樣:
select binary 11 =binary "11ddddd";
字元集轉換:CONVERT(xxx USING gb2312);
類型轉換和SQL Server一樣,就是類型參數有點點不同 : CAST(xxx AS 類型),CONVERT(xxx,類型);
類型必須用下列的類型:BINARY、CHAR()、DATE、TIME、DATETIME、DECIMAL、SIGNED、UNSIGNED。
數據類型:
字元串數據類型是建模在形式字元串的想法上的數據類型。字元串是幾乎在所有編程語言中可以實現的非常重要和有用的數據類型。在某些語言中它們可作為基本類型獲得,在另一些語言中做為復合類型獲得。多數高級語言的語法允許通常用某種方式引用起來的字元串來表示字元串數據類型的實例;這種元字元串叫做「文本」或「字元串文本」。
以上內容參考:網路-字元串
❻ sql語句中如何將字元類型轉換成數字類型
to_number()轉為數字格式
to_char()轉為字元串格式
to_date()轉為時間格式
..........
轉為數字格式只有是數字的字元串才能轉,這句話可能有點歧義,
通常字元前面帶0或點的數字字元串轉數字用到,如000012轉為12,.55轉為0.55,若是個英文符號等字元轉了就報無效數字類型的錯,如果遇到兩種數據類型不一致情況資料庫默認是會轉的,如關聯
ta.a=ba.b
ta.a是字元串,ba.b是數字,或者將ta.a插入到ba.b資料庫就會自動轉
❼ sql 不夠七位數 在左側自動補零,怎麼實現
您好:
跟您一個參考資料
第一種方法:
right('00000'+cast(@countasvarchar),5)
其中'00000'的個數為right函數的最後參數,例如這里是5,所以有5個0
@count就是被格式化的正整數
例如:
1、selectright('00000'+cast(dense_rank()over(orderbyzsbh)asVARCHAR(20)),5)
2、declare@countint
set@count=0
while(@count<1000)
begin
printright('00000'+cast(@countasvarchar),5)
set@count=@count+1
end
第二種方法:使用REPLICATE函數,將字串值重復指定的次數。例如:
REPLICATE('重復',3)輸出結果為:重復重復重復
【值得注意的是當integer_expression值為負值,則返回NULL】
因此,補0操作可如下實現:
SELECTREPLICATE('0',5-len('9'))+'9'--左邊補0,如00009
SELECT'9'+REPLICATE('0',5-len('9'))--右邊補0,如90000
第三種方法:使用stuff函數,刪除指定長度的字元,並在指定的起點處插入另一組字元。例如:
第一個字元串abcdef中刪除從第2個位置(字元b)開始的三個字元,然後在刪除的起始位置插入第二個字元串,從而創建並返回一個字元串。
SELECTSTUFF('abcdef',2,3,'ijklmn')
輸出結果為:
aijklmnef。
因此補0操作可如下實現:
selectstuff('00000',len('00000')-len('123')+1,len('123'),'123')
❽ SQL中字元串轉換成數值
4、數據類型轉換函數
函數名 操作 例 結果
ASC(S) 求第一個字元串的ASCII碼 ASC("what") 87
CHR(N) 求ASCII碼的字元 CHR(87) w
STR(R,L,D) 數值轉換成字元,L為長度,D為小數位數 X=3.1415
STR(X,6,2) 3.14
VAL(S) 字元串轉換為數值 VAL("123") 123.00
CTOD(S) 字元串轉日期 CTOD('11/01/2002') 11/01/2002
DTOC(D) 日期轉換成字元串 DTOC(DATE()) 11/01/2002
DTOS(D) 把日期轉成年月日式的字元串 DTOS(DATE()) 20021101
CTOT(C) 字元串轉成日期時間型 CTOT(11/01/2002 10:30:50am) 11/01/2002 10:30:50am
DTOT(D) 日期型轉為日期時間型 DTOT(DATE()) 11/25/2001 00:00:01am
TTOC(T) 日期時間型轉為字元型 TTOC(DATETIME()) 11/25/2001 00:00:01am
TTOD(T) 日期時間型轉為日期型 TTOD(DATETIME()) 11/25/2001
IIF(LE,E1,E2) 邏輯判斷 IIF(A>0,"YES","NO") YES