預計六月至東京自助旅行,記錄一下常用到的網站
1.背包客棧-日本關東
2.乗換案内 提供地鐵搭乘路線建議節省車資
3.コインロッカーサーチ 查詢各車站置物櫃
4.日本氣象廳 天氣預報
5.東京迪士尼入園人數預測
2013-05-04
2013-04-17
判斷資料表中特定欄位是否存在
於MS SQL資料庫中可使用sys.sysobjects查詢資料表是否存在,
而sys.columns則可查詢資料表中欄位資訊,
--檢查特定資料表是否存在
select OBJECT_ID('Prod')
--或
select * from sys.sysobjects where id=OBJECT_ID('Prod')
--檢查特定資料表中特定欄位是否存在
select * from sys.syscolumns where id=OBJECT_ID('Prod') and name='ProdNo'
如果是要查詢暫存表中的相關資訊,作法如下--檢查特定暫存資料表是否存在
select OBJECT_ID('tempdb..#Prod')
--或
select * from tempdb..sysobjects where id=OBJECT_ID('tempdb..#Prod')
--檢查特定暫存資料表中特定欄位是否存在
select * from tempdb..syscolumns where id=OBJECT_ID('tempdb..#Prod') and name='ProdNo'
2013-04-07
變更tempdb存放位置
MS SQL Server無法透過Miscorsoft SQL Server Management Studio
修改伺服器中的tempdb的存放位置,
可以透過下述語法達到變更需求
修改伺服器中的tempdb的存放位置,
可以透過下述語法達到變更需求
--查詢tempdb存放位置
USE master
SELECT name,physical_name
FROM sys.master_files
WHERE database_id=DB_ID('tempdb')
--修改tempdb存放位置
USE master;
ALTER DATABASE tempdb
MODIFY FILE (NAME=tempdev,FILENAME='X:\tempdb.mdf');
ALTER DATABASE tempdb
MODIFY FILE (NAME=templog,FILENAME='X:\templog.ldf');
2013-02-13
INSERT EXEC 陳述式不可以是巢狀的
最近編寫stored procedure發生
「INSERT EXEC 陳述式不可以是巢狀的」的錯誤訊息,
主因是因為procedure內使用exec將結果寫入tempdb,
又將procedure回傳的結果又寫入tempdb中,
於MS SQL中視為Nested Insert Exec,所以禁止此操作,
解決方法可使用新增本機linkedserver的方式處理。
2013-01-19
GROUPING 回傳是否為GROUP BY彙總資料行
延續前一篇group by 群組小計,
可搭配GROUPING使用,區分是否為匯總資料行。
可搭配GROUPING使用,區分是否為匯總資料行。
DECLARE @TABLE TABLE (Pname VARCHAR(10),
SW VARCHAR(10),
Qty SMALLINT)
INSERT INTO @TABLE VALUES ('AA','1',50)
INSERT INTO @TABLE VALUES ('AA','2',70)
INSERT INTO @TABLE VALUES ('AA','2',35)
INSERT INTO @TABLE VALUES ('AA','3',36)
INSERT INTO @TABLE VALUES ('BB','1',25)
INSERT INTO @TABLE VALUES ('BB','2',10)
INSERT INTO @TABLE VALUES ('BB','2',20)
SELECT Pname,SW,Qty=SUM(Qty),GP=GROUPING(Pname)
FROM @TABLE
GROUP BY Pname,SW WITH ROLLUP
--查詢結果 Pname SW Qty GP ---------- ---------- ----------- ---- AA 1 50 0 AA 2 105 0 AA 3 36 0 AA NULL 191 0 BB 1 25 0 BB 2 30 0 BB NULL 55 0 NULL NULL 246 1參考自:MSDN-GROUPING (Transact-SQL)
2012-10-20
Google Doc-Excel跨工作簿資料抓取
於Google Doc內的Excel想要讀取不同檔案的做表資料,
可以透過 ImportRange 函式,將資料轉入,
=ImportRange("參照工作簿key","資料範圍")
1.參照工作簿Key抓取方式如下圖,
僅複製key=後至#gid間字串即可,
2.於ImportRange第二個參數輸入要讀取的資料範圍即可!
範例:=ImportRange("0AplU-NopnRmHdFhlWW1WWnRzb01lYmxPMURkYl9RMnc","產品主檔!A:G")
參考自:Google 文件 說明
可以透過 ImportRange 函式,將資料轉入,
=ImportRange("參照工作簿key","資料範圍")
1.參照工作簿Key抓取方式如下圖,
僅複製key=後至#gid間字串即可,
2.於ImportRange第二個參數輸入要讀取的資料範圍即可!
範例:=ImportRange("0AplU-NopnRmHdFhlWW1WWnRzb01lYmxPMURkYl9RMnc","產品主檔!A:G")
參考自:Google 文件 說明
2012-10-11
2012-09-19
SQLite 時間處理問題
在Delphi中透過ADO元件使用SQLite資料庫時,
抓取時間的資料格式如下
會出現 is not a valid date and time 的錯誤訊息,
這是因為在台灣的時間格式 年、月、日 以"/"區隔而非"-",
故會產生時間格式錯誤的訊息,
使用下列語法指定輸出的時間格式,即可避免此問題
時間格式:
%d - 月份內的日期
%f - 秒數 (準確至千份一秒)
%H - 小時
%j - 年份內的第幾日 (沒有潤年最大 365, 潤年最大 366)
%m - 月份
%M - 分鐘
%s - Unix Time Stamp
%w - 星期 (0 是星期日,6 是星期六)
%W - 年份內的第幾個星期
%Y - 年份
%% - 顯示 % 時使用
參考自
Programming Design Notes-SQLite 日期和時間的操作
抓取時間的資料格式如下
select datetime(CURRENT_TIMESTAMP,'localtime') ------------------- 2012-09-19 23:29:45若將抓取的時間資料透過ADOQuery寫入,
會出現 is not a valid date and time 的錯誤訊息,
這是因為在台灣的時間格式 年、月、日 以"/"區隔而非"-",
故會產生時間格式錯誤的訊息,
使用下列語法指定輸出的時間格式,即可避免此問題
select strftime('%Y/%m/%d %H:%M:%f',datetime(CURRENT_TIMESTAMP,'localtime'))
-------------------
2012/09/19 23:29:45
時間格式:
%d - 月份內的日期
%f - 秒數 (準確至千份一秒)
%H - 小時
%j - 年份內的第幾日 (沒有潤年最大 365, 潤年最大 366)
%m - 月份
%M - 分鐘
%s - Unix Time Stamp
%w - 星期 (0 是星期日,6 是星期六)
%W - 年份內的第幾個星期
%Y - 年份
%% - 顯示 % 時使用
參考自
Programming Design Notes-SQLite 日期和時間的操作
2012-08-28
以COALESCE()取代ISNULL()
在德瑞克大的Blog看到一篇認識 COALESCE() 函數文章,
特別記錄一下,供以後自己參考!
一般我們使用ISNULL()會傳入兩個參數,
當第一個參數為NULL時,則會回傳第二個參數的值,
而COALESCE()不同於ISNULL(),在於可以傳入多個參數,
一直到第一個非NULL值的參數出現才回傳,
利用這個特性,也可以簡化當我們使用ISNULL()與CASE WHEN的搭配!!
特別記錄一下,供以後自己參考!
一般我們使用ISNULL()會傳入兩個參數,
當第一個參數為NULL時,則會回傳第二個參數的值,
而COALESCE()不同於ISNULL(),在於可以傳入多個參數,
一直到第一個非NULL值的參數出現才回傳,
利用這個特性,也可以簡化當我們使用ISNULL()與CASE WHEN的搭配!!
2012-08-24
使用 @@ROWCOUNT 抓取受影響資料筆數
MS SQL Server中提供@@ROWCOUNT函數,
可回傳上一個SQL語法影響的資料筆數,
利用此函數可以讓我們在編寫T-SQL語法時,
減少反覆利用select判斷資料次數,以增進效能!
SET NOCOUNT ON DELETE FROM ExaRec WHERE CorpNo='20001' AND PrgType='MATV16' SELECT '刪除資料筆數-'+CONVERT(VARCHAR,@@ROWCOUNT) ---------------------- 刪除資料筆數-4
參考自:
訂閱:
文章 (Atom)