當前位置:首頁 » 編程語言 » sql分解字元和數字
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql分解字元和數字

發布時間: 2023-07-15 11:43:57

① 在sql語句裡面如何將字元型轉換成數字型

先檢查金額列的數據是否都符合小數規范,用cast(金額 asdecimal(10,4))>500或者

convert(decimal(10,4),金額)>500

註:decimal的長度和碧鬧小數位數根據自己需要設定

sql中將字元串數字轉換成數字:

方法一:SELECT CAST('123' AS SIGNEDinteger);

方法二:SELECT CONVERT('123',SIGNED);

方法三:SELECT '123'+0;

(1)sql分解字元和數字擴展閱讀:

能將字元型轉換成數字型晌慧好,就能將數字轉化為字元,對於宴鉛精確數值的數據類型,轉換出來的字元串就是我們存儲的數值。比如:

declare @i int

set @i=123456789

print 'test:'+convert(varchar(20),@i)

輸出就是:test:123456789

而如果對於近似數值的數據類型,那麼可就沒有那麼簡單了。

declare @i float

set @i=123456789

print 'test:'+convert(varchar(20),@i)

輸出結果:test:1.23457e+008

② sql 語句 急!!!! 數據將英文和數字去掉,只保留漢字的sql語句

1、創建測試表,

create table test_replace_str(value varchar2(200));

4、編寫語句,將英文和數字去掉,只保留漢字;

select t.*, regexp_replace(value, '[a-zA-Z0-9]', '') sec

from test_replace_str t;

③ sql 查詢按指定的字元串個數分割字元串 比如123456789 按3個字元串分割 輸出結果如下 123 456 789

SELECT SUBSTRING('123456789',1,3) +' '+SUBSTRING('123456789',4,3) +' '+SUBSTRING('123456789',6,3)

④ sql 拆分 2011 abc 將數字和字元串拆分開來

1,如果格式都是2011abc 1998cde這樣統一的格式,就很簡單了,直接left() 加right()函數就可以搞定了。
2,如果格式 是 99abcd ,201105cd,a2012,a12bc15d 這種格式的就稍稍麻煩一些。
你先說哪種情況吧,然後再多列出來幾列數據看看

⑤ 如何在oracle中用SQL語句比較字元串型和數字型

Oracle比較字元串是根據ASCII碼來的,第一個字母的ASCII大小比較如果相等再比較下一個,類推。

字元串和數字進行操作是會報異常的,因為類型不一樣不能進行比較。
Oracle在執行SQL的時候有些時候會自動轉換,比如:
select * from chan_customer cc where cc.customer_id = '1';
即使customer_id是數字型的也可以查出來,但是Oracle有區分字元和數字
就是通過加不加單引號來區分。

⑥ SQL中怎麼取出字元串中某兩個字元,並轉換為數字

select
*
from
tablename
where
欄位名
in
('aa')
這個就是用到了in關鍵字,同樣的還有not
in關鍵字查詢的便是不包含某字元串的結果。
如果需要判斷是否在,如果在(或者不在)需要返回值的話,用is
null關鍵字加一個判斷,判斷一下就可以了。

⑦ 求一條sql語句,把資料庫表中一個欄位裡面的數據數字和文字都分開,並且生成一個相對應的列

2 命名規則
2.1 表名
XXX相關表以r_作為前綴,YYY相關表以t_作為前綴。如r_acc 、t_bcc。
後台表名盡量與前台表名相同,後台獨有的表應以_b作為後綴。如r_gggd_b。
命名應盡量反映存儲的數據內容。
2.2 視圖名
視圖以v_作為前綴。由於前台無視圖,故不需加_b。
命名應盡量體現各視圖的功能。
2.3 觸發器名
觸發器名為相應的表名加上後綴,Insert觸發器加'_i',Delete觸發器加'_d',Update觸發器加'_u',如:r_bch_i,r_bch_d,r_bch_u。
2.4 存儲過程名
存儲過程應以'sp_'開頭,後續部分主要以動賓形式構成,並用下劃線分割各個組成部分。如增加BSC機架的DRT單板的存儲過程為'sp_ins_board_drt'。
2.5 變數名
變數名採用小寫,若屬於片語形式,用下劃線分隔每個單詞,如@my_err_no。
2.6 命名中其他注意事項
以上命名都不得超過30個字元的系統限制。
變數名的長度限制為29(不包括標識字元@)。
數據對象、變數的命名都採用英文字元。禁止使用中文命名。

3 編程結構和描述
SQL SERVER系統中,一個批處理是從客戶傳給伺服器的一個完整的包,可以包含若干條SQL語句。批處理中的語句是作為一組去進行語法分析、編譯和執行的。觸發器、存儲過程等數據對象則是將批處理永久化的方法。
3.1 注釋
注釋可以包含在批處理中。在觸發器、存儲過程中包含描述性注釋將大大增加文本的可讀性和可維護性。本規范建議:
1、 注釋以英文為主。
實際應用中,發現以中文注釋的SQL語句版本在英文環境中不可用。為避免後續版本執行過程中發生某些異常錯誤,建議使用英文注釋。
2、 注釋盡可能詳細、全面。
創建每一數據對象前,應具體描述該對象的功能和用途。
傳入參數的含義應該有所說明。如果取值范圍確定,也應該一並說明。取值有特定含義的變數(如boolean類型變數),應給出每個值的含義。
3、 注釋語法包含兩種情況:單行注釋、多行注釋
單行注釋:注釋前有兩個連字元(--),最後以行尾序列(CR-LF)結束。一般,對變數、條件子句可以採用該類注釋。
多行注釋:符號/*和*/之間的內容為注釋內容。對某項完整的操作建議使用該類注釋。
4、 注釋簡潔,同時應描述清晰。
3.2 函數注釋:
編寫函數文本--如觸發器、存儲過程以及其他數據對象--時,必須為每個函數增加適當注釋。該注釋以多行注釋為主,主要結構如下:
/************************************************************************
*name : --函數名
*function : --函數功能
*input : --輸入參數
*output : --輸出參數
*author : --作者
*CreateDate : --創建時間
*UpdateDate : --函數更改信息(包括作者、時間、更改內容等)
*************************************************************************/
CREATE PROCEDURE sp_xxx

3.3 條件執行語句if…else
條件語句塊(statenemt block,以 begin…end為邊界)僅在if子句的條件為真時才被執行。為提高代碼的可讀性,建議嵌套不多於5層。還有,當嵌套層次太多時,應該考慮是否可以使用case語句。
3.4 重復執行while和跳轉語句goto
需要多次執行的語句,可以使用while結構。其中,控制while循環的條件在任何處理開始之前需要先執行一次。循環體中的保留字break無條件的退出while循環,然後繼續處理後續語句;保留字continue重新計算while條件,如果條件為真,則從循環開始處重新執行各語句。
使用跳轉語句goto和標簽label也可以方便地實現循環和其他更靈活的操作。SQL SERVER僅具有單通道語法分析器,因此不能解析對尚未創建的對象所做的前向參考。換言之,跳轉到某標簽的後續語句應該是可執行的(如不存在可能尚未創建的數據對象)。
3.5 書寫格式
資料庫伺服器端的觸發器和存儲過程是一類特殊的文本,為方便開發和維護,提高代碼的易讀性和可維護性。規范建議按照分級縮進格式編寫該文本。
順序執行的各命令位於同一級;條件語句塊(statenemt block,以 begin…end為邊界)位於下一級,類推。
SQL語句是該文本的主體。為適應某些教復雜的用戶需求,SQL語句可能比較龐大。為方便閱讀和維護,規范建議按照SQL語句中系統保留字的關鍵程度再劃分為三級。具體分級請參照下表。其中,非系統保留字(如欄位名、數據表名、標點符號)相對本級保留字再縮進一級。多個連續的非保留字可以分行書寫,也可以寫在同一行。當WHERE包含的條件子句教復雜時,應該每行只寫一個條件分句,並為重要的條件字句填寫單行注釋。
在保證基本縮進格式的前提下,可以通過對齊某些重要關鍵字(如條件關鍵字AND、OR,符號 = 、 <> 等)來進一步提高文本的易讀性和可維護性。
相鄰兩級的縮進量為10個空格。這也是ISQL編輯器默認的文本縮進量。另外,在ISQL編輯器中,一個TAB鍵也相當於10個空格。

註:按照功能,四類SQL語句(SELECT、INSERT、UPDATE、DELETE)的關鍵字可以劃分為三類:主關鍵字、次關鍵字、一般關鍵字。如下表所示:
主關鍵字 次關鍵字 一般關鍵字
SELECTINSERT (INTO)UPDATEDELETE FROMWHEREVALUESINSERT…SELECT…FROM語句中的SELECT和FROM ANDORBETWEENINLIKE

3.6 字體
系統保留字應大寫,包括系統公共變數等。其他字元(如用戶自定義變數、用戶自定義數據對象名)小寫。
需要特殊強調的部分可以大寫。
一條完整注釋語句的首字元應大寫。對某變數、某條件字句的注釋可以全部使用小寫。

通過下一節中生成表r_a的刪除觸發器的實例可以部分說明對象命名、注釋、基本書寫格式和字元大小寫方面的一些注意事項。

4 觸發器編程規范
4.1 範例
下面通過一個例子,說明觸發器編程中應遵守的規范:

/* delete related r_a according to deleted table */
CREATE TRIGGER r_a_d ON r_a
FOR DELETE
AS
IF @@ROWCOUNT = 0 -no rows deleted
RETURN

/* delete r_b table related to deleted table */
DELETE r_b
FROM r_b b, deleted d
WHERE b.id=d.id

IF @@ERROR != 0
BEGIN
RAISERROR("Error occurred deleting related records", 16, 1)
ROLLBACK TRAN
END

RETURN

作以下幾點說明:
1. 檢查是否有行被修改。注意:不論數據是否被修改,觸發器都會引發,執行情況取決於T-SQL語句的執行,而和任何潛在的where子句是否執行無關。
2. 因為被刪除行在該表中不再可用,所以應在被刪除的表中查看。
3. 檢查T-SQL語句的返回代碼,以捕獲任何出錯條件。
4.2 事務過程中的觸發器
1. 觸發器內的rollback將所有工作返回至最外層的begin tran,完成觸發器內的處理並異常終止當前的批處理。
2. 不可以從觸發器內部返回至某個已命名的事務過程,這將產生運行錯誤,掛起所有工作並終止批處理。
5 存儲過程編程規范
5.1 帶有參數的執行
在執行存儲過程時,可以通過名字來制定參數,這樣可以用任何順序傳遞參數,而且自動起到注釋的作用,因此建議編程時使用這種方法。
5.2 預設參數值
把參數的預設值定為null,這是捕獲在過程內調用存儲過程所產生的錯誤的常用方法,不應讓標准伺服器消息報告參數丟失。在給定預設之後,可以校驗該預設值並在存儲過程內採取措施。
注意,當附值SELECT語句不返回行時,局部變數將保持在SELECT語句執行之前所具有的值。建議使用系統提供的某些全局變數(如@@ROWCOUNT)檢測SELECT返回的結果。
5.3 返回值
每個存儲過程自動返回一個整數型的狀態值:成功完成時返回0,而返回-1~-99表示SQL Server檢測到了錯誤。以下為SQL Server系統常用的返回狀態碼:
值 含義
0 Procere was executed successfully
?-1 Object missing
?-2 Datatype error occurred
?-3 Process was chosen as deadlock victim
? -4 Permission error occurred
?-5 Syntax error occurred
? -6 Miscellaneous user error occurred
?-7 Resource error, such as out of space, occurred
? -8 Non-fatal internal problem encountered
?-9 System limit was reached
??-10 Fatal internal inconsistency occurred
??-11 Fatal internal inconsistency occurred
??-12 Table or index is corrupt
??-13 Database is corrupt
?-14 Hardware error occurred
在程序中,用return語句可指定大於0或小於-99的返回值,調用程序可以設置局部變數接收和檢查返回狀態。
5.4 存儲過程和事務處理
如果事務處理在存儲過程返回時的嵌套層次與執行時的層次不同,SQL Server會顯示信息提示事務處理嵌套失控。因為存儲過程並不異常終止該批處理,在執行和確認隨後的語句時,過程內的rollback tran 會導致數據完整性損失。
在編寫存儲過程時,應遵守以下原則:
1. 過程對@@trancount應無凈改變。
2. 僅當存儲過程發出begin tran語句時,才發出rollback tran。
5.5 其他注意事項
存儲過程應該堅實可靠的,因為它們是駐留在伺服器中,被頻繁使用的。應仔細檢查參數的有效性,並在有問題時返回出錯信息。應確保參數的數據類型和被比較的欄的數據類型匹配,從而避免數據類型匹配錯誤。在每個SQL語句之後要檢查@@error。

6 數據對象的國際化
6.1 關於數據對象的命名
數據對象和變數的命名一律採用英文字元。禁止使用中文命名。其他命名注意事項和規范請參考2命名規則。
6.2 關於RAISERROR
SQL SERVER 系統的RAISERROR命令能夠把某個出錯情況返回給調用過程,這對說明調用過程的執行情況很有必要;同時可以部分避免客戶端的冗餘操作。另外,結合系統存儲過程sp_addmessage和sp_dropmessage可以方便實現數據對象在SQL SERVER端的國際化。
SQL SERVER的MASTER資料庫中有錯誤信息數據表sysmessages,專門用於存儲系