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

Създаване на динамична клауза where в съхранена процедура на SQL Server

Поне един проблем:трябва да ограждате стойността на низа си с единични кавички и за да избегнете тези вътре в низ, трябва да ги удвоите:

WHERE ' + @pi_colName + ' = ''' + @pi_colValue + ''' AND ...

Може също така да искате да декларирате вашата @sql променлива като нещо по-голямо от 100 знака! Изглежда, че вашият низ се съкращава.

Ако възможните стойности за @pi_colName са крайни, типът данни винаги е низ и колоните са съвместими с сортиране, можете да направите нещо подобно и да избегнете динамичен SQL:

SELECT ...
WHERE CASE @pi_colName 
  WHEN 'col1' THEN col1
  WHEN 'col2' THEN col2
END = @pi_ColValue;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Оператор на агрегат за умножение в SQL

  2. Как да създадете персонализирани преки пътища в SQL Server Management Studio (SSMS) - SQL Server / TSQL урок, част 10

  3. Възстановяване на SQL Server 2017

  4. Скрипт на SQL Server 2008 за премахване на PK ограничение, което има генерирано от системата име

  5. Как да създадете таблица с помощта на заявка за избор в SQL Server?