字元sql
Ⅰ 在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怎麼拼接字元串
不同的資料庫,相應的字元串拼接方式不同,通過對比加深一下記憶。
一、MySQL字元串拼接
1、CONCAT函數
語法格式:CONCAT(char c1, char c2, ..., char cn) ,其中char代表字元串,定長與不定長均可以
連接兩個字元串
(2)字元sql擴展閱讀
字元串函數(String processing function)也叫字元串處理函數,指的是編程語言中用來進行字元串處理的函數,如C,pascal,Visual以及LotusScript中進行字元串拷貝,計算長度,字元查找等的函數。
字元串主要用於編程,概念說明、函數解釋、用法詳述見正文,這里補充一點:字元串在存儲上類似字元數組,所以它每一位的單個元素都是可以提取的,如s=「abcdefghij」,則s[1]=「a」,s[10]="j"。
而字元串的零位正是它的長度,如s[0]=10(※上述功能Ansistring沒有。),這可以給我們提供很多方便,如高精度運算時每一位都可以轉化為數字存入數組。
字元串函數的應用
1、連接運算 concat(s1,s2,s3…sn) 相當於s1+s2+s3+…+sn.
例:concat(『11』,'aa』)='11aa』;
2、求子串。 Copy(s,I,I) 從字元串s中截取第I個字元開始後的長度為l的子串。
例:(『abdag』,2,3)=』bda』
3、刪除子串。過程 Delete(s,I,l) 從字元串s中刪除第I個字元開始後的長度為l的子串。
例:s:=』abcde』;delete(s,2,3);結果s:=』ae』
4、插入子串。 過程Insert(s1,s2,I) 把s1插入到s2的第I個位置
例:s:=abc;insert(『12』,s,2);結果s:=』a12bc』
5、求字元串長度 length(s) 例:length(『12abc』)=5
在ASP中 求字元串長度用 len(s)例: len("abc12")=5
6、搜索子串的位置 pos(s1,s2) 如果s1是s2的子串 ,則返回s1的第一個字元在s2中的位置,若不是子串,則返回0.
例:pos(『ab』,』12abcd』)=3
7、字元的大寫轉換。Upcase(ch) 求字元ch的大寫體。
例:upcase(『a』)=』A』
8、數值轉換為數串。 過程 Str(x,s) 把數值x化為數串s.
例:str(12345,s); 結果s=』12345』
9、數串轉換為數值。 過程val(s,x,I) 把數串s轉化為數值x,如果成功則I=0,不成功則I為無效字元的序數,第三個參數也可不傳
例:val(『1234』,x,I);結果 x:=1234
Ⅲ SQL數據類型!
SQL字元類型介紹
一,名詞定義
char為 定長字元型,如char(10),你實際數據是『hello』,這時Sql Server 會自動補充空格,填滿10位。varchar:可變長字元,沒有上述問題,是多長就保存多長的數據。另外, char 和 varchar 在存儲數據時,每個英文字元和數字都佔一個位元組,而一個中文的字元會占兩個位元組.
nchar 與 nvarchar 的用法基本相同,只不過在存儲數據時採用的是 Unicode元碼, 一個英文字元和一個中文字元所佔的空間是相同的.都是兩個位元組.
二、名詞解釋
1、當使用非unicode時慎用以下這種查詢:
select f from t where f = N』xx』
原因:無法利用到索引,因為資料庫會將f先轉換到unicode再和N』xx』比較
2、char 和相同長度的varchar處理速度差不多(後面還有說明)
3、varchar的長度不會影響處理速度(看後面解釋)
4、索引中列總長度最多支持總為900位元組,所以長度大於900的varchar、char和大於450的nvarchar,nchar將無法創建索引
5、text、ntext上是無法創建索引的
6、O/R Mapping中對應實體的屬性類型一般是以string居多,用char[]的非常少,所以如果按mapping的合理性來說,可變長度的類型更加吻合
7、一般基礎資料表中的name在實際查詢中基本上全部是使用like 『%xx%』這種方式,而這種方式是無法利用索引的,所以如果對於此種欄位,索引建了也白建
8、其它一些像remark的欄位則是根本不需要查詢的,所以不需要索引
9、varchar的存放和string是一樣原理的,即length {block}這種方式,所以varchar的長度和它實際佔用空間是無關的
10、對於固定長度的欄位,是需要額外空間來存放NULL標識的,所以如果一個char欄位中出現非常多的NULL,那麼很不幸,你的佔用空間比沒有NULL的大,這時候,你可以使用特殊標識來存放,如:』NV』
11、同上,所以對於這種NULL查詢,索引是無法生效的,假如你使用了NULL標識替代的話,那麼恭喜你,你可以利用到索引了
12、char和varchar的比較成本是一樣的,現在關鍵就看它們的索引查找的成本了,因為查找策略都一樣,因此應該比較誰佔用空間小。在存放相同數量的字元情況下,如果數量小,那麼char佔用長度是小於varchar的,但如果數量稍大,則varchar完全可能小於char,而且要看實際填充數值的充實度,比如說varchar(3)和char(3),那麼理論上應該是char快了,但如果是char(10)和varchar(10),充實度只有30%的情況下,理論上就應該是varchar快了。因為varchar需要額外空間存放塊長度,所以只要length(1-fillfactor)大於這個存放空間(好像是2位元組),那麼它就會比相同長度的char快了。
13、nvarchar比varchar要慢上一些,而且對於非unicode字元它會佔用雙倍的空間,那麼這么一種類型推出來是為什麼呢?對,就是為了國際化,對於unicode類型的數據,排序規則對它們是不起作用的,而非unicode字元在處理不同語言的數據時,必須指定排序規則才能正常工作,所以n類型就這么一點好處。
三、名詞總結
1、如果數據量非常大,又能100%確定長度且保存只是ansi字元,那麼char
2、能確定長度又不一定是ansi字元或者,那麼用nchar;
3、不確定長度,要查詢且希望利用索引的話,用nvarchar類型吧,將它們設到400;
4、不查詢的話沒什麼好說的,用nvarchar(4000)
5、性格豪爽的可以只用3和4,偶爾用用1,畢竟這是一種額外說明,等於告訴別人說,我一定需要長度為X位的數據
(這些字元型在網上都能搜索到的,搜搜看那,給你幾個網址:
http://blog1.poco.cn/myBlogDetail.htx&id=1619242&userid=40517719&pri=&n=0
http://www.w3school.com.cn/sql/sql_syntax.asp
)
Ⅳ sql語句中查找某欄位中含有某字元串的語句怎麼寫
select filename from oa_file where filename not like '%[!-¥]%'
或者這個:
select filename from oa_file where filename not like '%[!-?]%'
出現的問題就是問號和問好也是不一樣的,比如說英文標點半形的問號是「?」,英文標點全形的問號是「?」但是中文半形問號是「?」中文全形的問號是「?」
這些都是不一樣的,你搜出來的都是帶有英文半形問號的文件。
(4)字元sql擴展閱讀:
SQL中的欄位「包含」與「包含於」字元串的寫法
1、查詢表中某欄位值「包含」某字元串的所有記錄的方法
假如表中有一個name欄位,查詢name包含「張三」的所有記錄,可以這樣寫sql:
Stirng strsql="SELECT * FROM 表名 WHERE name LIKE 』%"+"張三"+"%』";
2、查詢某欄位值「包含於」某個字元串的所有記錄的方法
如果查詢表中name欄位包含於字元串「張三是個好學生」的所有記錄,可以這樣寫sql:
String strsql="SELECT * FROM 表名 WHERE INSTR(』張三是個好學生』,name)>0";
即可查詢,記錄中的name欄位值中包括:張、三、是、個、好、學、生、張三、......等所有記錄。
註:以上sql字元串中請將全形符號改為半形符號。
Ⅳ sql涓琛ㄧず浠繪剰瀛楃︾殑鏄
鍦⊿QL涓錛岃〃紺轟換鎰忓瓧絎︾殑絎﹀彿閫氬父浣跨敤閫氱敤鐨勫瓧絎︿覆瀛楅潰鍊肩﹀彿錛屽嵆鍗曞紩鍙鳳紙'錛夈
鎷撳睍鐭ヨ瘑錛
鍗曞紩鍙風敤浜庡皢浠繪剰瀛楃︽垨瀛楃︿覆浣滀負鏁版嵁鍊艱繘琛屽紩鐢ㄦ垨瀛樺偍銆備緥濡傦紝鍋囪炬垜浠鏈変竴涓鍚嶄負"users"鐨勮〃錛屽叾涓鍖呭惈涓涓鍚嶄負"username"鐨勫垪錛屾垜浠鎯寵佹彃鍏ヤ竴涓鍖呭惈浠繪剰瀛楃︾殑瀛楃︿覆鍊礆紝鍙浠ヤ嬌鐢ㄥ崟寮曞彿鏉ヤ唬琛ㄤ換鎰忓瓧絎︺
浠ヤ笅鏄涓涓鍏蜂綋鐨凷QL鎻掑叆璇鍙ョず渚嬶細
INSERT INTO users (username) VALUES ('浠繪剰瀛楃');
鍦ㄤ笂榪扮ず渚嬩腑錛屽崟寮曞彿鐢ㄤ簬灝"浠繪剰瀛楃"浣滀負涓涓瀛楃︿覆瀛楅潰鍊艱繘琛屽紩鐢ㄥ拰瀛樺偍銆傝鋒敞鎰忥紝浣跨敤鍗曞紩鍙峰紩鐢ㄧ殑瀛楃︿覆涓鐨勪換鎰忓瓧絎︿笉浼氳瑙f瀽涓虹壒孌婂瓧絎︽垨鏁版嵁搴撴搷浣溿
鍙︿竴縐嶅父瑙佺殑鏂瑰紡鏄浣跨敤閫氶厤絎︼紝濡係QL Server涓鐨勭櫨鍒嗗彿錛%錛夛紝瀹冨厑璁稿湪鏌ヨ涓鍖歸厤浠繪剰瀛楃︺傜劧鑰岋紝闇瑕佹敞鎰忕殑鏄錛孲QL鐨勮娉曞拰鍔熻兘鍙鑳藉洜涓嶅悓鐨勬暟鎹搴撶郴緇熻屽紓銆
鎬葷殑鏉ヨ達紝鍦⊿QL涓琛ㄧず浠繪剰瀛楃︾殑鏂瑰紡閫氬父鏄閫氳繃浣跨敤鍗曞紩鍙峰皢瀛楃︿覆瀛楅潰鍊艱繘琛屽紩鐢ㄦ垨瀛樺偍銆傚叿浣撹娉曞拰鍔熻兘鍙鑳藉洜浣跨敤鐨勬暟鎹搴撶郴緇熻屽紓錛屽洜姝ゅ緩璁鏌ラ槄鐩稿叧鏁版嵁搴撶郴緇熺殑鏂囨。浠ヨ幏鍙栨洿璇︾粏鐨勪俊鎮銆
Ⅵ sql如何截取字元
sql截取字元串:
1、LOCATE(substr, str):返回子串 substr 在字元串 str 中第一次出現的位置,如果字元substr在字元串str中不存在,則返回0;
2、POSITION(substr IN str):返回子串 substr 在字元串 str 中第一次出現的位置,如果字元substr在字元串str中不存在,與LOCATE函數作用相同;
3、LEFT(str, length):從左邊開始截取str,length是截取的長度;
4、RIGHT(str,length):從右邊開始截取str,length是截取的長度;
5、SUBSTRING_INDEX(str ,substr ,n):返回字元substr在str中第n次出現位置之前的字元串;
6、SUBSTRING(str,n ,m):返回字元串str從第n個字元截取到第m個字元;
7、REPLACE(str, n, m):將字元串str中的n字元替換成m字元;
8、LENGTH(str):計算字元串str的長度。