A. sql怎麼截取小數點前的數字,但是不要四捨五入
其實,你說的截取小數點前的數字,也就是將小數轉換為整數。
可以使用函數【cast】進行轉換
示例:將1234.9678轉為整數
selectcast(1234.9678asint)
輸出結果為:1234
B. sql如何截取字元串中前面的數字
如果提取字元串中的數字,需要自定義函數,以下函數包含截取字元串中的數字、字母、漢字等。
createfunctionfn_myget
(@strasvarchar(max),
@categoryasvarchar(10)='Chinese',
@startasint=1,
@endasint=100000)
returnsvarchar(max)
as
begin
declare@iint=@start
declare@lenstrint=len(@str)
declare@str1varchar(max)
declare@strrevarchar(max)=''
while@i<=@lenstrand@i<=@end
begin
set@str1=substring(@str,@i,1);
--提取漢字
if(@Category='Chinese')
begin
if(len(@str1)!=datalength(@str1))
set@strre=@strre+@str1
end
--提取字母
elseif(@Category='Letters')
begin
if((ascii(@str1)>=65andascii(@str1)<=90orascii(@str1)>=97andascii(@str1)<=122))
set@strre=@strre+@str1
end
--提取數字
elseif(@Category='Digital')
begin
if(ascii(@str1)>=48andascii(@str1)<=57)
set@strre=@strre+@str1
end
else
set@strre='輸入錯誤'
set@i=@i+1
end
return(@strre)
end
測試:
1、截取字元串dsajf23423423中的數字
selectdbo.fn_myget('dsajf23423423','Digital',1,1000)
結果:
自定義函數說明:
函數共需要4個參數:
第一個參數是要截取的字元串;
第二個參數根據要截取的內容不同,分別有「Digital」(截取數字)、「Letters」(截取字母)、「Chinese」(截取中文);
第三個參數代表截取的起始位;
第四個參數代表截取的截取的結束位。
C. sql截取字元串並替換
前面的分隔符取%,後面的分隔符是什麼?就是說,以什麼為分截取的依據?
沒消息了?只好亂猜一下
假設你後面的特徵是「0-9」或左圓括弧「(」,那麼可以這樣:
select
left(
substring(欄位名,charindex('%',欄位名)+1,len(欄位名)) ,
patindex('%[0-9(]%',substring(欄位名,charindex('%',欄位名)+1,len(欄位名) )+'0' )-1
)說明:
先按你的方法截取%後面的字串,
然後再從左側開始,截取到含有數字或左圓擴號的字元前面一個字元。
考慮到如果後面沒有數字或擴號的情況,後面預加了0字元,這樣當後面沒有要求的字元時,會取百分號後面的所有字元。
D. SQL 如何取小數點前面的數
select substr('10.20.30.40',
instr('10.20.30.40', '.', 1, 1 /*這里的1表示第1個. */) + 1,
instr('10.20.30.40', '.', 1, 2 /*這里的2表示第2個. */) -
instr('10.20.30.40', '.', 1, 1 /*這里的1表示第1個. */) - 1)
from al;
E. sql中,有兩條數據,一條有一個百分號,另一條有兩個百分號,怎麼取只有一個百分
id a
1 %%啊啊我sdaasa2222
2 asdad%999
假設表是上邊
看到 a 欄位 第一條是兩個百分號,第二條一個百分號
查詢欄位a只有一個百分號的SQL如下:
select * from test where (LENGTH(a) - length(REPLACE(a,'%',''))) = 1
用欄位a的長度 減去 把欄位中的百分號替換為空後的長度,拿到的就是百分號的個數,在等於1就是只看有一個百分號的記錄了
F. 如何用sql語句截取某個欄位中指定文字後面緊跟的數值。 例如:(前面
如何用sql語句截取某個欄位中指定文字後面緊跟的數值。 例如:(前面
一、用到的函數:substring(' ', , )、charindex(' ',' ')
select SUBSTRING('[email protected]',1,charindex('@','[email protected]')-1)
1.substring(字元串表達式,開始位置,長度):
從一個指定字元串的指定位置截取制定長度的字元;
第一個參數表示被截取的字元串;
第二個參數表示要在第一個參數中開始截取的位置;
第三個參數表示要截取的長度。
例如:select substring('abc123',1,2) →返回ab
從字元串『abc123』的第一個字元開始截取,共截取兩個字元,最後得到『ab』。
2.charindex(字元串表達式1,字元串表達式2[,整數表達式]):
在字元串2中查找字元串1,如果存在返回第一個匹配的位置,如果不存在返回0。如果字元串1和字元串2中有一個是null則返回null。
可以指定在字元串2中查找的起始位置。
例如:select charindex('ab','BCabTabD') → 返回3
select charindex('ab','BCabTabD',4) →返回6
二、用到的函數:left(' ', )、charindex(' ',' ')
select LEFT('[email protected]',charindex('@','[email protected]')-1)
1.left(字元串表達式,整數表達式):
從字元串表達式的最左邊開始截取整數表達式個字元。
例如:select left('abcdef',3) →返回abc
G. oracle中 sql截取某個字元前面和後面的值
1、將新建好的表aaaa,填充需要查詢的數據以"_"或者","為分隔符的兩條數據。
H. sql 截取某個字元之前的數據
CREATE PROCEDURE pim_Utility_ReadCRMSaleLead
AS
select A.ProjectName as '項目名稱', A.SaleDistrict as '項目所在地',A.Address as '客戶地址', SUBSTRING(1,CHARINDEX(『+』,A.RelateLead1)- 1,LEN(A.RelateLead1)) as '設計院',
A.BudgetNumber as '預計容量',A.Finish_On as '訂貨時間' ,
A.WorkStatus as '狀態', B.FolderId
INTO #Temp0 from pimCRMSaleLead A ,pimCRMLead B
where A.CustomerId *= B.LeadID
update #Temp0 set #Temp0.項目所在地=C.Name FROM pimDataClassFolder C WHERE #Temp0.FolderId=C.FolderId
SELECT * FROM #Temp0
GO
I. sql 截取字元串,根據指定的字元串||截取字元前面的數字
select substring(aa,1,charindex('||',aa)-1) aa from A
charindex() --輸出長度
substring() --截取