2009年10月15日 星期四

SQL處理中英文字串長度的範例

SQL處理中英文字串長度的範例

-- 計算中英文字串長度
DECLARE @string varchar(50)
set @string='一二三456七八9十'
select @string '字串', len(@string) '中英字數', datalength(@string) '資料長度', datalength(@string)-len(@string) '中文字數'

-- 截取中英文字串長度
DECLARE @string varchar(50), @l int
set @string='一二三456七八9十'
set @l=8
select substring(@string,1,@l) '取字數', case when datalength(@string)>8 then convert(varchar(8),@string)+'...' else convert(varchar(8),@string) end '取資料數'
select substring(@string,1,@l)
-- 無法使用下列寫法,主要在「convert(varchar(@l),@string)」內的『varchar(@l)』括號內只可使用數值,無法使用變數 >"<。
select substring(@string,1,@l), case when datalength(@string) > @l then convert(varchar(@l),@string)+'...' else convert(varchar(@l),@string) end

2009年10月14日 星期三

EXCEL的資料轉置(橫轉直)

EXCEL的資料轉置(橫轉直, 直轉橫)



常會有要整理資料表,要將原本橫向的資料欄位改為直向的資料顯示又常會忘記,所以,特寫這篇圖文註記一下 ^^!!!

1.範例資料如下: 要將 A1..E4的資料轉成直式顯示。

2.選取A1..E4的資料。按右鍵 ->「複製(C)」將資料複製。

3.點擊A6位置。按右鍵 -> 「選擇性貼上(S)...」。
4.開啟『選擇性貼上』框後,勾選「轉置(E)」後,按下「確定」鈕。

5.如下圖A6..D10的顯示,即完成了資料的轉向了^^。

2009年10月9日 星期五

暫存表判斷 / 產生日期暫存表

參考網址:http://www.blueshop.com.tw/board/show.asp?subcde=BRD20050616212814W4M&fumcde=FUM20041006152735ZFS


-- #暫存表判斷並刪除
IF OBJECT_ID('tempdb..#tmpDate') IS NOT NULL
DROP TABLE #tmpDate
go

DECLARE @sd datetime --開始日期
DECLARE @ed datetime --結束日期
DECLARE @d1 datetime --處理日期
DECLARE @d2 varchar --處理民國日期

set @sd='2008-09-11'
set @ed='2009-01-14'
set @d1=@sd

-- 先轉一筆資料入 #tmpDate 暫存表 drop table #tmpDate
select D_date '西元日期', weeknum '星期別', convert(varchar(4),DATEPART ("year", @d1)-1911)+right(replace(D_date,'-','/'),6) '民國日期' into #tmpDate
from(select convert(varchar(10),@d1,121) D_date, DATEPART ( "weekday" , @d1 )-1 weeknum ) a
select @d1=DATEADD("day" , 1, @d1 ) --加一天

WHILE (@d1 <= @ed) BEGIN insert into #tmpDate select *, convert(varchar(4),DATEPART ("year", @d1)-1911)+right(replace(D_date,'-','/'),6) C_date from(select convert(varchar(10),@d1,121) D_date, DATEPART ( "weekday" , @d1 )-1 weeknum ) a select @d1=DATEADD("day" , 1, @d1 ) END -- 顯示暫存表
select * from #tmpDate
order by [西元日期]