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

sql含有一段数字的字段

发布时间: 2023-01-23 04:27:50

⑴ 如何在sql语句中查询只带数字的字段

你应该希望提取的字段只要含有数字就提出,剔除空和不含数字的字符串。

select * from table where regexp_substr(check,'[0-9]+') is not null

⑵ SQL取字段中某一部分特定数值

如果只是固定取"20/30"比较容易, 只需找到"20/30"在此字符串的开始位置,再截取5个字符的长度就可以了,如:
SELECT CASE WHEN CHARINDEX('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg', '20/30') > 0 THEN SUBSTRING('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg', CHARINDEX('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg', '20/30'),5) ELSE '' END

如果不一定是20/30,而是与"/"前后关联的数字(eg: 14/20, 33/66,等...),就麻烦了,你可能需要写一个抽取字符串的函数,如: f_substr(),然后在SQL里调用:
select 用户.f_substr('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg')

⑶ sql 如何查询包含某一字段的值

这种情况需要写存储过程,进行全库搜索。代码如下:

declare@cloumnsvarchar(40)
declare@tablenamevarchar(40)
declare@strvarchar(40)
declare@countsint
declare@sqlnvarchar(2000)
declareMyCursorCursorFor
Selecta.nameasColumns,b.,sysobjectsb,systypesc
wherea.id=b.id
andb.type='U'
anda.xtype=c.xtype
andc.namelike'%varchar%'
set@str='张三'
OpenMyCursor
FetchnextFromMyCursorInto@cloumns,@tablename
While(@@Fetch_Status=0)
Begin
set@sql='select@tmp_counts=count(*)from'+@tablename+'where'+@cloumns+'='''+@str+''''
executesp_executesql@sql,N'@tmp_countsintout',@countsout
if@counts>0
begin
print'表名为:'+@tablename+',字段名为'+@cloumns
end
FetchnextFromMyCursorInto@cloumns,@tablename
End
CloseMyCursor
DeallocateMyCursor

注意:其中“张三”为要查找的字符串,可以替换成其他的,如果查询的字符串超长,需要在定义变量时适当扩大长度。

可以替换成其他的,如果查询的字符串超长,需要在定义变量时适当扩大长度。

⑷ sql语句 查询字段中包含某个数字的列信息

select * from info where (',' + id + ',') like ('%,' + '9' +',%')

⑸ SQL怎么查询某一个数字在字段中

select * from test where value like '4'

你只要用查询器打开数据库test
然后输入上面语句。
搜索结果就会出来了。 。

上面两个一个创建表和插入数据的。

跟查询没关系的。。

⑹ 如何把SQL SERVER中一个含有数字的字符串找出来

在SQL SERVER 2005中,将表中字符串转换为数字的函数共2个:
1. convert(int,字段名) 例如:select convert(int,'3')
2. cast(字段名 as int) 例如:select cast('3' as int)
其实,一般情况下没有必要把字符串转换为数字类型
假如需要比较两个字段是否相等,但是一个字段为字符串类型,一个为数字类型,用“=”比较两个值是否相等时,SQL SERVER会自动把字符串转换为数字再比较的!
例如:
select da.TITLE_NAME,dsc.NAME
from dbo.DV_DUTY dd
inner join DV_SECOND_CLASS dsc on (dsc.ID=dd.AREA)
left join DV_ASSET da on(da.ID=dd.RECORD_ID and dd.TYPE='2')
where dd.AREA is not null
这个SQl中,inner join DV_SECOND_CLASS dsc on (dsc.ID=dd.AREA) 中dsc.ID为数字类型,dd.AREA为字符类型,相当于这样on(1='1')的判断,这时候就会自动吧字符串的'1'转换为数字类型再比较的。
但是也有弊端,一旦字符类型转换为数字类型出错(说明字符串的确就非数字组成的),SQL就会抛出异常。

SQL SERVER 2005中有判断字段是否为数字的函数:
ISNUMERIC(字段名) -----假如字段是数字类型返回1,不是就返回0
但是好像有的时候不好使,比如:select isnumeric('3,34') 就返回1
说明这个函数对字段值中全是数字但是数字间用“,”和“.”(逗号或点)隔开的都视为数字了!

⑺ sql语句 查询字段中包含某个数字的列信息

select * from 表 where ','+列4+',' like('%,2,%')
一般情况下,像这种序列填充列,在设计时不会在列中的前后加逗号,可能的数据:
2 或者 2,22 又或者 0,1,2
所以一般放在查询中人为的给列值前后加逗号,再模糊匹配.

⑻ sql语句中对一个字段排序,字段中含有字符串和数字,(怎根据数字进行排序)

order by 字段名称+0 desc/asc的形式进行排序
order by 字段名称*1 desc/asc的形式进行排序