当前位置:首页 » 编程语言 » sql截取百分号前面的数字
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql截取百分号前面的数字

发布时间: 2022-09-23 18:28:55

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() --截取