T-SQL creates a dynamic where statement?

I know this is not possible, but is there something that works? Basically I want the where statement to be dynamic, allowing me to pass it any string that it can find.

Declare @search varchar(80)
set @search = 'RegionID'

Select * from TBL_TripDetails
Where @search = '1'

Thank you for your responses. After reading several documents, I decided to use several select statements instead of using dynamic sql. thank!

+3
source share
5 answers
declare @sql nvarchar(max);
set @sql = N'select * from table where ' + quotename(@search) + N'=''1''';
exec sp_executesql @sql;

See Curse and blessings of dynamic SQL

+5
source

This is indeed possible, although he was often frowned at. Take a look at sp_executesql

+2
source
Declare @search varchar(80)
set @search = 'RegionID'

declare @query varchar(max)
set @query = "Select * from TBL_TripDetails Where " + @search + " = '1'"
exec @query
+1
DECLARE @search VARCHAR(80)
DECLARE @SQL VARCHAR(8000)

SET @search = 'RegionID'

SET @SQL = 'SELECT * FROM TBL_TripDetails WHERE ' + @search + ' = 1'
EXEC @SQL

. SQL SQL-.

+1

: " , ". , 1, .

, , Dynamic SQL. / (, RegionID , , ), .

DECLARE @RegionID AS VARCHAR(1);

SELECT * 
FROM TABLE
WHERE (@RegionID Is Null OR @RegionID = '' OR RegionID = @RegionID);

, @RegionID NULL, .

+1

Source: https://habr.com/ru/post/1758421/


All Articles