MessageYou use it in an adhoc query in query analyzer or SSMA.  I have not 
tried it as an ad hoc query in CF as I myself tend not to use cfquery wherever 
I can.

Teddy
  ----- Original Message ----- 
  From: Paul Morton 
  To: [email protected] 
  Sent: Tuesday, June 05, 2007 1:58 PM
  Subject: RE: [ACFUG Discuss] OT: SQL help


  Without creating a SP, can I use this in a select statement?
    -----Original Message-----
    From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Teddy R Payne
    Sent: Tuesday, June 05, 2007 11:45 AM
    To: [email protected]
    Subject: Re: [ACFUG Discuss] OT: SQL help


    Paul,
    There is already an open source function in SQL Server to do this for you:

    http://www.4guysfromrolla.com/webtech/031004-1.shtml

    They explain how to put it together.  

    Here is the function creation for how I put it together from their 
explanation:

    if exists (select * from dbo.sysobjects where id = 
object_id(N'[dbo].[Split]') and xtype in (N'FN', N'IF', N'TF'))
    drop function [dbo].[Split]
    GO

    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS OFF 
    GO


    CREATE  FUNCTION dbo.Split
    (
     @List nvarchar(4000),
     @SplitOn nvarchar(5)
    )  

    RETURNS @RtnValue table 
    (
      
     Id int identity(1,1),
     Value nvarchar(250)
    ) 

    AS  

    BEGIN

     While (Charindex(@SplitOn,@List)>0)
     Begin
     
      Insert Into 
       @RtnValue
        (
        value
       )
      Select
           Value = ltrim(rtrim(Substring(@List,1,Charindex(@SplitOn,@List)-1)))
     
          Set @List = 
Substring(@List,Charindex(@SplitOn,@List)+len(@SplitOn),len(@List))
     End
     
     Insert Into 
      @RtnValue 
      (
       Value
      )
     Select 
      Value = ltrim(rtrim(@List))
     
     Return

    END

    GO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO

    It is implemented as such:

    CREATE PROCEDURE getEmployeesByID(@employeeList nvarchar(1000))
    AS

    Select 
       employeeId, -- integer (int)
       FirstName, 
       LastName 
    from #myTable
    Where 
       employeeId IN (Select convert(int,Value) from 
dbo.Split(@employeeList,','))


    Cheers,
    Teddy


      ----- Original Message ----- 
      From: Paul Morton 
      To: [email protected] 
      Sent: Tuesday, June 05, 2007 1:36 PM
      Subject: [ACFUG Discuss] OT: SQL help


      I apologize for the OT post, but I'm getting frustrated.

      I am attempting to use a UDF to split a varchar (comma delimited list of 
ints) in an IN clause in a SQL statement, and I'm not able to get the SQL 
statement to pass a Table field to the UDF.

      I'm hoping someone sees a glaring error, or can tell me I can't do this.
      MS SQL 2000
      ________________________________________________________________
      CREATE FUNCTION dbo.Split
       (
        @List nvarchar(2000),
        @SplitOn nvarchar(5)
       )  
       RETURNS @RtnValue table 
       (
        
        Id int identity(1,1),
        Value nvarchar(100)
       ) 
       AS  
       BEGIN 
        While (Charindex(@SplitOn,@List)>0)
        Begin

         Insert Into @RtnValue (value)
         Select 
          Value = ltrim(rtrim(Substring(@List,1,Charindex(@SplitOn,@List)-1)))

         Set @List = 
Substring(@List,Charindex(@SplitOn,@List)+len(@SplitOn),len(@List))
        End

        Insert Into @RtnValue (Value)
        Select Value = ltrim(rtrim(@List))
       
        Return
       END
      
________________________________________________________________________________

      SQL Statement
      SELECT     *
      FROM         dbo.ORDER_ITEMS oi LEFT OUTER JOIN
                            dbo.AP_translation tr ON tr.option_id IN
      (select convert(int,Value) from dbo.Split(oi.OptionIDs, ','))
      WHERE     (oi.Order_ID = 12387)
      
_____________________________________________________________________________
      Error received:
      Server: Msg 170, Level 15, State 1, Line 4
      Line 4: Incorrect syntax near '.'.


      OptionIDs is a varchar(255) field with a comma delimited list of integers.
      It doesn't like the oi.OptionIDs.  If I put in a list like '0,1,2' in 
it's place, the query works.

      Can I not pass a field into a UDF?
      Is there another way to skin this cat?


      Paul

      ------------------------------------------------------------- 
      Annual Sponsor - Figleaf Software 

      To unsubscribe from this list, manage your profile @ 
      http://www.acfug.org?fa=login.edituserform 

      For more info, see http://www.acfug.org/mailinglists 
      Archive @ http://www.mail-archive.com/discussion%40acfug.org/ 
      List hosted by FusionLink 
      ------------------------------------------------------------- 

    ------------------------------------------------------------- 
    Annual Sponsor - Figleaf Software 

    To unsubscribe from this list, manage your profile @ 
    http://www.acfug.org?fa=login.edituserform 

    For more info, see http://www.acfug.org/mailinglists 
    Archive @ http://www.mail-archive.com/discussion%40acfug.org/ 
    List hosted by FusionLink 
    ------------------------------------------------------------- 

  ------------------------------------------------------------- 
  Annual Sponsor - Figleaf Software 

  To unsubscribe from this list, manage your profile @ 
  http://www.acfug.org?fa=login.edituserform 

  For more info, see http://www.acfug.org/mailinglists 
  Archive @ http://www.mail-archive.com/discussion%40acfug.org/ 
  List hosted by FusionLink 
  -------------------------------------------------------------


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

Annual Sponsor FigLeaf Software - http://www.figleaf.com



To unsubscribe from this list, manage your profile @ 

http://www.acfug.org?fa=login.edituserform



For more info, see http://www.acfug.org/mailinglists

Archive @ http://www.mail-archive.com/discussion%40acfug.org/

List hosted by http://www.fusionlink.com

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


Reply via email to