2014年10月22日 星期三

MSSQL string语法 補0 extract

Select RIGHT(REPLICATE('0', 8) + CAST('12345' as NVARCHAR), 8) as '左邊補零'
, LEFT(CAST('12345' as NVARCHAR) + REPLICATE('0', 8), 8) as '右邊補零'

Select Right('00000000' + Cast(123 as varchar),8)  > '00000123'
補0  REPLICATE('0',4-LEN(@strNo))+@strNo 

Select 
 a.經紗編號
 ,replace(SUBSTRING(a.經紗編號,1,CHARINDEX(',',a.經紗編號 )),',','')
 ,SUBSTRING(a.經紗編號,1,CHARINDEX(',',a.經紗編號 ))
 ,SUBSTRING(a.經紗編號, CHARINDEX(',',a.經紗編號 )+1, 100) as 字
 ,CHARINDEX(',',a.經紗編號 )
 , CHARINDEX(',',a.經紗編號 )-1 as 長度
  ,replace(LEFT( SUBSTRING(a.經紗編號, CHARINDEX(',',a.經紗編號 )+1, 100), CHARINDEX(',',a.經紗編號 )-1 ),',','') as 經紗號
  From [織物設計二版] a
  where len(SUBSTRING(a.經紗編號,1,CHARINDEX(',',a.經紗編號 )))<>0
  and 布號='T70516'
引用

How to extract this specific substring in SQL Server?

SUBSTRING(YOUR_FIELD, CHARINDEX(";",YOUR_FIELD)+1, 100), CHARINDEX("[",YOUR_FIELD)-1 )
  From YOUR_TABLE;


How do I extract part of a string in t-sql


http://yangxinde.pixnet.net/blog/post/24638424-%E5%9C%A8sql-server%E4%B8%AD%E5%A6%82%E4%BD%95%E5%88%87%E5%89%B2%E5%AD%97%E4%B8%B2 

在一般VB或JAVA等程式語言,常常會與Substring 配合使用的 Indexof 在MS-SQL也內建了類似的函式讓使用者使用。

IndexOf 的函式一般是找尋字串中指定字元的起始值。如要在MS-SQL中使用類似找尋字元起始位置的函式語法如下:

MSSQL 语法 :
CHARINDEX ( expression1 , expression2  , [start_location ] ) 

如果在 expression2 内没有找到 expression1,则 CHARINDEX 返回 0

同時我們一般還會配合SUBSTRING以截取字串中的所需要的字串。
MSSQL 语法 :SUBSTRING ( expression start length )

截取字符串expression,从start 个字符开始,到Length 结束

例子:

SELECT SUBSTRING('Picture.jpg',CHARINDEX(
'.','Picture.jpg'),4)
結果:
------------------------
.jpg

----------------------------------------------------------

select * from dbo.[split]('123,456,789',',')

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[Split]
(
    @RowData varchar(8000),
    @SplitOn nvarchar(1)
)  
RETURNS @RtnValue table 
(
    Id int identity(1,1),
    Data nvarchar(100)

AS  
BEGIN 
    Declare @Cnt int
    Set @Cnt = 1

    While (Charindex(@SplitOn,@RowData)>0)
    Begin
        Insert Into @RtnValue (data)
        Select 
            Data = ltrim(rtrim(Substring(@RowData,1,Charindex(@SplitOn,@RowData)-1)))

        Set @RowData = Substring(@RowData,Charindex(@SplitOn,@RowData)+1,len(@RowData))
        Set @Cnt = @Cnt + 1
    End
    
    Insert Into @RtnValue (data)
    Select Data = ltrim(rtrim(@RowData))

    Return

END


SELECT CASE WHEN last_name is NULL THEN first_name ELSE first_name + ' ' + last_name

2014年10月11日 星期六

Export GridView Data to Word, Excel, Text, Pdf File in Asp.net

https://code.msdn.microsoft.com/office/Export-GridView-to-07c9f836

http://www.webblogsforyou.com/export-gridview-data-to-word-excel-text-pdf-file-asp-net-c-vb/

透過 CSS 在使用 window.print() 時,列印出來的 Table 內容(假設資料量很大),可以在每一頁都能重複標頭(Header)內容

http://paladinprogram.blogspot.tw/2010/04/css-table.html

2014年10月1日 星期三

得到的Remote 是 ::1

參考
在button 按下去的時候,去執行以下程式 :
Dim Remote As String
Remote = Request.ServerVariables("REMOTE_ADDR")
結果得到的Remote 是 ::1
windows7 + VS2010+ASP.NET

::1 代表自己連自己
這是 IPv6 的本機 IP 位址,如果是用戶端 IPv6/IPv4 混合時,會以 IPv6 先,目前這只會在本機發生。
想要取得 IPv4 位置的話,可以去網路卡設定中將 IPv6 協定先關閉。

小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/ 
雲端學堂Facebook: http://www.facebook.com/pages/StudyAzurecom-yun-duan-xue-tang/155855707799579

非postback的時候,這個值為何?
改使用:
  1. Request.UserHostAddress
  2. HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
  3. Page第一次載入,非postback的時候,記錄後暫存起來,讓postback不會掉。
文中提到:

REMOTE_ADDR:The IP address of the remote host that is making the request.

If Request.ServerVariables("HTTP_X_FORWARDED_FOR") = "" OR InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), "unknown") > 0 Then
        strIPAddr = Request.ServerVariables("REMOTE_ADDR")
    ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",") > 0 Then
        strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",")-1)
    ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";") > 0 Then
        strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";")-1)
    Else
        strIPAddr = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
    End If
    Return Mid(strIPAddr, 1, 30).Trim