sql取數
『壹』 sql,字元串中取數字
1、創建測試表,
create table test_str(id int, v_str varchar2(20));
『貳』 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都不一樣 這兩個放一起有點囧吧...
若資料庫中日期為字元串 則將日期函數替換為相應的字元串函數
以上回答你滿意么?
『叄』 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表
有問題追問
『肆』 sql 取數
select NO,sum(Qtity),sum(Qtity*money) from table group by NO
『伍』 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
*************************************************
---
以上,希望對你有所幫助。
『陸』 SQL如何取數據
你的結果集是一個列的數據,如果你非要用變數來取這三個值就寫死代碼吧。或者用游標循環取
『柒』 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
『捌』 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(+)