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

沒有留言:

張貼留言