none
Dúvida - inserir aspas simples RRS feed

  • Pergunta

  • Olá pessoal.

    tenho a seguinte situação:

    DECLARE @CATEGORIA NVARCHAR(MAX) = '1.000.000.00.00,1.200.000.00.00,1.300.000.00.00'

    E gostaria de colocar aspas simples para poder usar na clausula IN

    Para ficar assim: select * from categoria where codCategoria IN('1.000.000.00.00','1.200.000.00.00','1.300.000.00.00')

    sexta-feira, 6 de fevereiro de 2015 13:02

Respostas

  • Ok. 

    Você pode trabalhar com SQL Dinâmico como no exemplo abaixo, mas isso deve ser usado com cuidado por causa do SQL Injection.

    DECLARE @CATEGORIA NVARCHAR(MAX) = '''1.000.000.00.00'',''1.200.000.00.00'',''1.300.000.00.00'''
    
    DECLARE @Comando VARCHAR(1000)
    SET @Comando = 'select * from categoria where codCategoria IN(' + @categoria +')'
    
    exec(@comando)


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    sexta-feira, 6 de fevereiro de 2015 13:33

Todas as Respostas

  • Olá Junior,

    Para inserir aspas no conteúdo da sua variável, tente isso: 

    DECLARE @CATEGORIA NVARCHAR(MAX) = '''1.000.000.00.00'',''1.200.000.00.00'',''1.300.000.00.00'''

    Espero que ajude!


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    sexta-feira, 6 de fevereiro de 2015 13:11
  • é porque a variavel @categoria é um parametro de entrada de uma proc, e recebe as categorias dessa forma:  @categoria = '1.000.000.00.00,1.200.000.00.00,1.300.000.00.00'

    e eu preciso transformar de tal amneira que no IN fique:

    IN(@categoria), ou seja,  IN('1.000.000.00.00','1.200.000.00.00','1.300.000.00.00')

    sexta-feira, 6 de fevereiro de 2015 13:20
  • Ok. 

    Você pode trabalhar com SQL Dinâmico como no exemplo abaixo, mas isso deve ser usado com cuidado por causa do SQL Injection.

    DECLARE @CATEGORIA NVARCHAR(MAX) = '''1.000.000.00.00'',''1.200.000.00.00'',''1.300.000.00.00'''
    
    DECLARE @Comando VARCHAR(1000)
    SET @Comando = 'select * from categoria where codCategoria IN(' + @categoria +')'
    
    exec(@comando)


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */

    sexta-feira, 6 de fevereiro de 2015 13:33
  • De um REPLACE no campo que receve da proc e faça o IN como já sugerido:

    DECLARE @CATEGORIA NVARCHAR(MAX) = '1.000.000.00.00,1.200.000.00.00,1.300.000.00.00'
    
    SELECT @CATEGORIA, REPLACE(@CATEGORIA, ',',''',''')
    


    sexta-feira, 6 de fevereiro de 2015 13:58
  • Deleted
    sexta-feira, 6 de fevereiro de 2015 14:21
  • Deleted
    sexta-feira, 6 de fevereiro de 2015 14:38
  • Bom dia J Junior,

    Marquei como resposta a sugestão da Mariana, pois parece ter atendido a sua solicitação. Caso ainda esteja com o problema, desmarque como resposta que continuaremos ajudando ok?

    Obrigado,

    Abraço!


    Ricardo Cortes Microsoft Contingent Staff

    Esse contedo e fornecido sem garantias de qualquer tipo, seja expressa ou implicita.

    MSDN Community Support

    segunda-feira, 9 de fevereiro de 2015 13:48
  • Boa tarde,

    Para inserir aspas simples na coluna codCategoria podemos utilizar a função Replicate, ficaria assim:

    select Replicate ( '''', 1) +codCategoria+Replicate ( '''', 1) +Replicate ( ',', 1) from categoria


    terça-feira, 20 de agosto de 2019 15:04