SQL Server: any equivalent of strpos()?

后端 未结 3 1233
失恋的感觉
失恋的感觉 2020-12-16 12:31

I\'m dealing with an annoying database where one field contains what really should be stored two separate fields. So the column is stored something like \"The first string~

相关标签:
3条回答
  • 2020-12-16 13:06

    If you need your data in columns here is what I use:

      create FUNCTION [dbo].[fncTableFromCommaString] (@strList varchar(8000))  
    RETURNS @retTable Table (intValue int) AS  
    BEGIN 
    
        DECLARE @intPos tinyint
    
        WHILE CHARINDEX(',',@strList) > 0
        BEGIN   
            SET @intPos=CHARINDEX(',',@strList) 
            INSERT INTO @retTable (intValue) values (CONVERT(int, LEFT(@strList,@intPos-1)))
            SET @strList = RIGHT(@strList, LEN(@strList)-@intPos)
        END
        IF LEN(@strList)>0 
            INSERT INTO @retTable (intValue) values (CONVERT(int, @strList))
    
        RETURN
    
    END
    

    Just replace ',' in the function with your delimiter (or maybe even parametrize it)

    0 讨论(0)
  • 2020-12-16 13:19

    User charindex:

    Select CHARINDEX ('S','MICROSOFT SQL SERVER 2000')
    Result: 6
    

    Link

    0 讨论(0)
  • 2020-12-16 13:24

    The PatIndex function should give you the location of the pattern as a part of a string.

    PATINDEX ( '%pattern%' , expression )
    

    http://msdn.microsoft.com/en-us/library/ms188395.aspx

    0 讨论(0)
提交回复
热议问题