我以為Math.Floor就是無條件捨去,所以一直使用這個方法,結果我錯了!
這次在處理小數點後的數值時,才發現Math.Floor無法指定小數點後位數,查了資料才知道原本一直用的Math.Floor並不是無條件捨去而已,而是無條件抓取十進位或雙精度的整數位數,並沒有小數點後數值的處理,原來我之前都沒有拿這個處理過小數點後的位數,不然就慘囉~後來參考了將小數點後指定位數的數值無條件捨去的方式,可以控制小數點位數,也能夠發揮原本的功能,修改成自己需要使用的情況後,總算把這個意料之外的問題解決了。
2013年7月17日 星期三
2013年7月15日 星期一
SQL指令抓取逗號分隔的資料
此為SQL指令筆記,不多做描述...
抓取SQL同一個欄位中,用逗號','分隔的資料。
/*第一筆資料*/
SELECT A.Comment, LEFT(A.Comment,CHARINDEX(',',A.Comment)-1) FROM Pro A
WHERE A.Comment <> '' AND CHARINDEX(',',A.Comment) > 0
/*第二筆資料*/
SELECT A.Comment, SUBSTRING(A.Comment,LEN(LEFT(A.Comment,CHARINDEX(',',A.Comment)))+1,LEN(A.Comment)-CHARINDEX(',',A.Comment)) FROM Pro A
WHERE A.Comment <> '' AND SUBSTRING(A.Comment,CHARINDEX(',',A.Comment),1)= ','
特性:抓取Comment欄位的資料裡,不包含空白、NULL、沒有逗點分隔的資料,而且WHERE的內容為降低錯誤訊息產生的原因。
抓取SQL同一個欄位中,用逗號','分隔的資料。
/*第一筆資料*/
SELECT A.Comment, LEFT(A.Comment,CHARINDEX(',',A.Comment)-1) FROM Pro A
WHERE A.Comment <> '' AND CHARINDEX(',',A.Comment) > 0
/*第二筆資料*/
SELECT A.Comment, SUBSTRING(A.Comment,LEN(LEFT(A.Comment,CHARINDEX(',',A.Comment)))+1,LEN(A.Comment)-CHARINDEX(',',A.Comment)) FROM Pro A
WHERE A.Comment <> '' AND SUBSTRING(A.Comment,CHARINDEX(',',A.Comment),1)= ','
特性:抓取Comment欄位的資料裡,不包含空白、NULL、沒有逗點分隔的資料,而且WHERE的內容為降低錯誤訊息產生的原因。
標籤:
SQL Server,
SQL指令
2013年7月2日 星期二
搞怪的ReportViewer
有時間我會再把相關的資料都整理再放上來,但先來說說"路徑"的怪問題。
錯誤訊息為
處理本機報表時發生錯誤
報表 XXX 的定義無效。
編譯運算式時發生不可預期錯誤。原生編譯器傳回值:'[BC2001]找不到檔案 XXX
如上圖的錯誤訊息,正常都會覺得是檔案的問題,就一直在查路徑。
但實際上這個問題不是路徑的問題,有網友說是使用者設定檔的問題,但我發現另一個解決方式,就是RDL檔案"使用了ReportViewer不支援的內建欄位",只要把欄位拿掉就會正常了,ReportViewer可以使用的內建欄位在此。
正常在建立RDL檔案時,會把內建欄位放進去,原本若是使用Reporting Services可能會沒有問題,但ReportViewer並不支援,此錯誤訊息讓人摸不著頭緒,光這個問題就搞了好幾天。
接下來如果順利,我一定要把ReportViewer相關的文件與做法再弄一次,全部花了我一個禮拜才搞完,真的是很麻煩。
錯誤訊息為
處理本機報表時發生錯誤
報表 XXX 的定義無效。
編譯運算式時發生不可預期錯誤。原生編譯器傳回值:'[BC2001]找不到檔案 XXX
如上圖的錯誤訊息,正常都會覺得是檔案的問題,就一直在查路徑。
但實際上這個問題不是路徑的問題,有網友說是使用者設定檔的問題,但我發現另一個解決方式,就是RDL檔案"使用了ReportViewer不支援的內建欄位",只要把欄位拿掉就會正常了,ReportViewer可以使用的內建欄位在此。
正常在建立RDL檔案時,會把內建欄位放進去,原本若是使用Reporting Services可能會沒有問題,但ReportViewer並不支援,此錯誤訊息讓人摸不著頭緒,光這個問題就搞了好幾天。
接下來如果順利,我一定要把ReportViewer相關的文件與做法再弄一次,全部花了我一個禮拜才搞完,真的是很麻煩。
標籤:
ASP.Net,
Report Viewer
2013年5月29日 星期三
SQL指令取出重覆資料中的第一筆
這是利用SQL 2005才新增的指令ROW_NUMBER()做出來的,其實以前我就寫過了,但舊資料中一直都找不到,這次要使用花了很多時間找,都無法找到,只好上網GOOGLE,剛好查到MSDN的問答記錄,救了我一命,特地記錄下來,免得下次又要花好多時間找.
Select *,ROW_NUMBER() over (partition by ProductNo,customerNo,Brand Order by customerNo ASC) AS no from 單價資料 WHERE no=1
以上可以用 PARTITION BY當成 GROUP BY 來用,再用 ORDER BY 排序資料列,用ROW_NUMBER()新增的資料列則可以用 AS的方式命名,只要做的子查詢,就能獨立抓出一群資料中重複幾筆資料的第一筆出來.
Select *,ROW_NUMBER() over (partition by ProductNo,customerNo,Brand Order by customerNo ASC) AS no from 單價資料 WHERE no=1
以上可以用 PARTITION BY當成 GROUP BY 來用,再用 ORDER BY 排序資料列,用ROW_NUMBER()新增的資料列則可以用 AS的方式命名,只要做的子查詢,就能獨立抓出一群資料中重複幾筆資料的第一筆出來.
標籤:
SQL Server,
SQL指令
訂閱:
文章 (Atom)