3

編集:
実際には、MSSQLクエリを実行します。結果は次のようになります。

IDページ名
1 1
2 01
3 01、15

次に、別のコマンド URLを実行し、結果をxml dataとして取得しました。結果を (単純な形式で) 次のようにします。

4 01、01 あぁ、15
5 02
6 03
7 100
8 101
9 115

coldfusion を使用すると、両方のデータを 1 つの「一時テーブル」にマージできます。したがって、実際には、データベースクエリではなく QoQ を使用しています
END EDIT

このようなテーブルがあります

IDページ名
1 1
2 01
3 01、15
4 01、01 あぁ、15
5 02
6 03
7 100
8 101
9 115

pagename = 1 を表示したい場合、結果は可能ですか

IDページ名
1 1
2 01
3 01、15
4 01、01 あぁ、15
4

2 に答える 2

-1

MSSQL の解決策 (意図的に堅牢で、parselist 関数を使用すると、db をより適切なものに正規化できます)

補助機能:

CREATE FUNCTION [dbo].[udf_GetNumeric]
    (@strAlphaNumeric VARCHAR(256))
RETURNS VARCHAR(256)
AS
BEGIN
    DECLARE @intAlpha INT
    SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric)
    BEGIN
        WHILE @intAlpha > 0
        BEGIN
            SET @strAlphaNumeric = STUFF(@strAlphaNumeric, @intAlpha, 1, '' )
            SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric )
        END
    END
    RETURN ISNULL(@strAlphaNumeric,0)
END
GO

CREATE FUNCTION [dbo].[ParseList_IntAny]
(   
  @List nvarchar(1000)
)
RETURNS @Result TABLE (
  IntValue int not null
)
as
begin
  declare @Value nvarchar(20), @Position int
  select @List = LTRIM(RTRIM(@List))+ ','
  select @Position = CHARINDEX(',', @List, 1)

  if REPLACE(@List, ',', '') <> ''
  begin
    while @Position > 0
      begin
        select @Value = LTRIM(RTRIM(LEFT(@List, @Position - 1)))
        if @Value <> ''
        begin
          declare @IntValue int
          select @IntValue = dbo.udf_GetNumeric(@Value)
          insert into @Result(IntValue) values (@IntValue)
        end
        select @List = RIGHT(@List, LEN(@List) - @Position)
        select @Position = CHARINDEX(',', @List, 1)
      end
  end
  return
end
GO


declare @tmp table(ID int,  pagename nvarchar(400))
insert into @tmp
select 1,'1'
union select 2,'01'
union select 3,'01, 15'
union select 4,'01, 01 Aaa, 15'
union select 5,'02'
union select 6,'03'
union select 7,'100'
union select 8,'101'
union select 9,'115'

select * from @tmp
where exists(select top 1 1 from dbo.ParseList_IntAny(pagename) where IntValue = 1)
于 2013-07-24T08:31:54.540 に答える