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

sql取数

发布时间: 2022-01-22 00:45:00

A. sql server 中怎样从字段中取数字

selectSUBSTRING(规格,CHARINDEX('*',规格)+1,len(规格)-CHARINDEX('*',规格)-patindex(N'%[1234567890]%',reverse(SUBSTRING(规格,CHARINDEX('*',规格)+1,len(规格)-CHARINDEX('*',规格))))+1)fromtest

不如出库以后再处理。

B. sql如何读取数据

设:
*前字符数不定
)后字符数不定
取*到)之间的字符
代码如下:

select substring(货名,charindex('*',货名),len(charindex('(',货名))-len(charindex('*',货名))) from 表名 where 。。。。。。。

如果需要数字转换下:
select cast(substring(货名,charindex('*',货名),len(charindex('(',货名))-len(charindex('*',货名))) as int) from 表名 where 。。。。。。。

C. SQL如何取数据

你的结果集是一个列的数据,如果你非要用变量来取这三个值就写死代码吧。或者用游标循环取

D. SQL如何取数字 各个位上的个十百千万

先将整型转换成字符串,再来做截取:

用到函数:
用到cast转换
substring截取

selectid,SUBSTRING(cast(字段asvarchar(8)),1,1),SUBSTRING(cast(字段asvarchar(8)),2,1),SUBSTRING(cast(字段asvarchar(8)),3,1),SUBSTRING(cast(字段asvarchar(8)),4,1)from表

有问题追问

E. SQL数据库如何提取数据

1、查询数据库(test)中的所有表名的方法:

SELECT name
FROM [test]..sysobjects where xtype='U'
********
补充:
如果有的表不存在【时间】那就用下面的语句直接把含有【时间】列的表名找到:
SELECT d.name
FROM [test]..syscolumns a
inner join [test]..sysobjects d on a.id=d.id and d.xtype='U' and a.name='时间'
**********

2、遍历这个表名取出数据插入到另外的数据库中(SqlServer中的遍历方法我不是很清楚,给你提供个思路,oracle的话我就能把程序写出来了O(∩_∩)O~)。

如:遍历结果存储到数据库test2中
insert into [test2]..遍历出的表名 select * from 遍历出的表名 where datediff(day,'2009-08-07',时间)>0;

重复上面的sql语句指导讲数据库test中的表名完全遍历完为止。

*************************************************************
补充:我试验了一下下面把实验代码给你(建一个存储过程)
create proc test as
--定义游标变量
declare cur1 cursor for
SELECT d.name
FROM [test]..syscolumns a
inner join [test]..sysobjects d on a.id=d.id and d.xtype='U' and a.name='时间'
--定义临时变量
declare @tmp varchar(1000)
--定义sql字符串
declare @strsql varchar(4000)
--打开游标
open cur1
--读取第一条数据,也就是第一个表名
fetch next from cur1 into @tmp
--是读完
while(@@fetch_status = 0)
begin
--连接sql文
set @strsql='insert into [test2]..'+@tmp++' select * from '+@tmp+' where datediff(day,'+char(39)+'2009-08-07'+char(39)+',时间)>0'
--执行这个sql
exec(@strsql)
--读取下一条数据
fetch next from cur1 into @tmp
end
--关闭游标
close cur1
--摧毁游标所占资源
deallocate cur1
*************************************************

---
以上,希望对你有所帮助。

F. sql 取数问题

SELECT B.TYPE, MONTH(A.开始日期), COUNT(A.ID) AS 开始个数,
COUNT( CASE WHEN C.结束日期 IS NOT NULL AND C.结束日期 <> '' THEN A.ID ELSE NULL END) AS 结束个数,
CASE WHEN C.结束日期 IS NOT NULL AND C.结束日期 <> '' THEN DAYS(C.结束日期) - DAYS(A.开始日期) ELSE NULL END AS 处理时间
FROM A
LEFT JOIN B ON A.ID = B.ID
LEFT JOIN C ON A.ID = C.ID
WHERE (A.开始时间 >= 日期范围(开始时间))
GROUP BY B.TYPE,
CASE WHEN C.结束日期 IS NOT NULL AND C.结束日期 <> '' THEN DAYS(C.结束日期) - DAYS(A.开始日期) ELSE NULL END

话说 个数是个统计量 处理时间则针对每个ID都不一样 这两个放一起有点囧吧...
若数据库中日期为字符串 则将日期函数替换为相应的字符串函数
以上回答你满意么?

G. SQL 取数问题,谢谢

不太清楚开始个数和结束个数是什么意思,所以只写了个大概,仅供参考吧:

SELECT A.ID, A.开始时间, B.TYPE, C.结束日期
FROM TABLE_A A, TABLE_B B, TABLE_C C
WHERE A.ID = B.ID(+)
AND A.ID = C.ID(+)

H. sql 取数

select NO,sum(Qtity),sum(Qtity*money) from table group by NO

I. sql 如何取中间数

如果是字符串 就这样
select substring('123456',2,2)...

如果是数字类型
则:select substring(to_char(123456),2,2)...

J. SQL怎样取出字符串中的数字

比如你的表叫作TALBE1,字段是str1,类型为nvarchar,那么找出有湘政发的最大号加1这样写
select max(convert(int,substring(str1,patindex(N'%[1234567890]%',str1),len(str1)-patindex(N'%[1234567890]%',str1)+1-patindex(N'%[1234567890]%',reverse(str1))+1)))+1 from table1 where str1 like N'%湘政发%'
测试通过,耗时很长,请认真试试。
这是sql server 的写法。

如果是ORACAL或其它的SQL语言您可以到这里参考一下。你会发现,用SQL SERVER我的方法要比他的好
http://book.csdn.net/bookfiles/530/10053017904.shtml