Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Вложени оператори if в израза SELECT за съхранена процедура на SQL Server

За това бих се опитал да използвам по-формално решение за динамичен SQL, нещо като следното, като се имат предвид дефинираните от вас входни параметри

DECLARE @SQL VARCHAR(MAX)

SET @SQL = '
SELECT

FROM
     database.dbo.table T
WHERE
     T.deleted = ''n'' '

--Do your conditional stuff here
IF @searchf1 <> '' THEN
    SET @SQL = @SQL + ' AND fieldf1 = ' + @searchf1 + ' AND fieldr1 = ' + @searchr1 + ''' '

--Finish the query
SET @SQL = @SQL + ' ORDER BY xxx'

EXEC(@SQL)

ОТКАЗ ОТ ОТГОВОРНОСТ: Използването на Dynamic SQL НЕ е нещо, което трябва да се приема с лека ръка и трябва да се вземе подходящо внимание при ВСИЧКИ обстоятелства, за да се гарантира, че не сте отворени за атаки чрез SQL инжектиране, но за някои операции от тип динамично търсене това е една от най-елегантните маршрут.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. добавяне на описание на колона

  2. Съхранение и анализ на документи във файлова система на Windows със семантично търсене на SQL Server – част 2

  3. Windows услуга или SQL задача?

  4. Разделяне на разделени стойности в SQL колона на множество редове, които използват множество разделители

  5. SQL за получаване на следващата не нулева стойност в колона