2013-03-31 27 views
0

在SQL逗號分割字符串,並將其存儲爲split_item1,split_item2 和分割字符串用逗號SQL查詢

select column_name from table-name where column_name = 'split_item1' or split_item2' 

請張貼此

+1

什麼[RDBMS](HTTP://en.wikipedia .org/wiki/Relational_database_management_system)您正在使用? 'RDBMS'代表*關係數據庫管理系統*。 'RDBMS是SQL'的基礎,並且適用於所有現代數據庫系統,如MS SQL Server,IBM DB2,Oracle,MySQL等... –

回答

1

正確的語法假設你正在使用SQL Server,你需要從列的兩側連接,,以便您可以匹配您正在搜索的值。

SELECT * 
FROM TableName 
WHERE ',' + csvColumn + ',' LIKE '%,' + 'split_item1' + ',%' OR 
     ',' + csvColumn + ',' LIKE '%,' + 'split_item2' + ',%' 

串聯符號不同,在每一個DBMS,CONCAT()爲MySQL,||甲骨文。

+0

我的字符串是'001,002,003,...'和'022 '是相應的列,即列2 我需要根據逗號分隔值將字符串拆分爲001 002 003,以便每當給出值001或002或003時,它應該返回'022'列2 即 從table_name中選擇column2 where column1像001或002或003 –

0

可以使用如下代碼(SQLSERVER創建)。

Create Function FUN_STRING_SPLIT(@text varchar(max), @separator varchar(10)) 
Returns @Result Table 
(
    POSITION INT IDENTITY(1,1) NOT NULL, VALUE VARCHAR(max) 
) 
As 
Begin 
    Declare @ini int = 1, @end int = 0 

    While @end <= LEN(@text) 
    Begin 
     if @end > 0 set @ini = @end + LEN(@separator) 
     if @ini > 0 set @end = CHARINDEX(@separator, @text, @ini) 
     if @end = 0 set @end = LEN(@text) + 1 

     Insert Into @Result (VALUE) Values (SUBSTRING(@text,@ini,@end - @ini)) 
    End 
    Return 
End 

然後使用像:

Select * From FUN_STRING_SPLIT('Word1,Word2,Word2,Etc..', ','); 
0

SELECT * FROM fromSplitStringSep( '字1 wordr2 WORD3',」「)

CREATE function [dbo].[SplitStringSep] 
    (
     @str nvarchar(4000), 
     @separator char(1) 
    ) 
    returns table 
    AS 
    return (
     with tokens(p, a, b) AS (
      select 
       1, 
       1, 
       charindex(@separator, @str) 
      union all 
      select 
       p + 1, 
       b + 1, 
       charindex(@separator, @str, b + 1) 
      from tokens 
      where b > 0 
     ) 
     select 
      p-1 zeroBasedOccurance, 
      substring(
       @str, 
       a, 
       case when b > 0 then b-a ELSE 4000 end) 
      AS s 
     from tokens 
    ) 
相關問題