Questione : la stringa spaccata in modo da esso può essere usato per dove nella dichiarazione

Vorrei cercare un numero all'interno di una stringa, comunque il campo nella tabella è un number
per esempio

MYSTRING È PASSATO POICHÈ UNA STRINGA al select*
di PROCEDURE
da tbWholesalerProduct
interno unisce il tbProduct (tbProduct.iProductId = tbWholesalerProduct.iProductId) su
interno unisce il tbProductGroup (tbProductGroup.iProductGroupId = tbProduct.iProductGroupId) su
interno unisce dbo.tbWholesalerProductPrice su dbo.tbWholesalerProduct.iWholesalerProductId = dbo.tbWholesalerProductPrice.iWholesalerproductid
dove (dbo.tbWholesalerProductPrice.vState gradicono il @vState)
e (tbWholesalerProduct.iWholesalerId = @iWholesalerId)
e (tbProduct.iProductGroupId = @iProductGroupId) e (tbProduct.cStatus = “un ")
and (tbProduct.iProductid in MYSTRING) -- il iProductid è un column

Thanks
di int class= del

Risposta : la stringa spaccata in modo da esso può essere usato per dove nella dichiarazione

Potete greate una funzione convertire la lista in tabella dei numeri interi quindi utilizzate la funzione nella vostra domanda
Qualcosa gradice

GENERARE LA FUNZIONE [dbo]. [GET_INT_TABLE]
(
      @STRINPUT VARCHAR (MAX)      
)
RESTITUISCE LA TABELLA DEL @INTTABLE
(
      VALORE INT
)
AS
COMINCIARE
      DICHIARARE il @insertvalue varchar (32)
      DICHIARARE I @POS INT
      DICHIARARE I @NEXTPOS INT
      DICHIARARE @VALUELEN IL INT

      SELEZIONARE i @pos = 0, @nextpos = 1
      MENTRE @nextpos > 0
      COMINCIARE
            SELEZIONARE i @nextpos = il charindex (“,„, @STRINPUT, @pos + 1)
            PRESCELTO @VALUELEN = CASO
                              QUANDO @NEXTPOS > 0 ALLORA
                                    @nextpos
                                          ALTRIMENTI
                                    len (@STRINPUT) + 1
                                   ESTREMITÀ - @pos - 1
         
        regolare il @insertvalue = (sottostringa (@STRINPUT, @pos + 1, @valuelen))                      
        se IsNumeric (@insertvalue) = 1
        cominciare
                  INSERIRE IL @INTTABLE (VALORE)
                  VALORI (@insertvalue)
            estremità
            SELEZIONARE i @pos = i @nextpos
      ESTREMITÀ
            
      RITORNO       
ESTREMITÀ

Allora nella vostra domanda di procedura immagazzinata
….
dove (tbProduct.iProductid dentro (selezionare il valore a partire da GET_INT_TABLE (@MYSTRING)))
Altre soluzioni  
 
programming4us programming4us