Empty statement in T-SQL

Is there an empty statement keyword in T-SQL in Sql Server 2005 or newer? Something like NULL statement in PL/SQL.

Null values can be inserted into a column by explicitly stating NULL in an INSERT or UPDATE statement or by leaving a column out of an INSERT statement. Null values cannot be used as information that is required to distinguish one row in a table from another row in a table, such as primary keys, or for information used to distribute rows, such

You can declare a label to do nothing.

DECLARE @value INT

IF @value IS NULL
BEGIN
no_op1: 
END

SQL Query to Select All If Parameter is Empty or NULL. In this example, we used the IIF Function along with ISNULL. First, the ISNULL function checks whether the parameter value is NULL or not. If True, it will replace the value with Empty string or Blank. Next, IIF will check whether the parameter is Blank or not.

ugly happens sometimes. I believe their is a valid use. In a lengthy/complicated decision branching structure with several if else statements, some of those statements may contain conditions in which you specifically desire no action. You also don't want those condition falling thru do the default else, where certain work is done. In that case, it's a valid use.

Here are two ways to do this - see B and C

Declare @status as char(1) 
set @status = 'D'

If (@status = 'A')
    select 'Great!'

Else if (@status = 'B')
begin
    if null=null select null -- predicate never resolves true
end

Else if (@status = 'C')
    set @status = @status  -- set a variable to itself 

Else
    select 'Needs work!'

Note, this is an over-simplified example. It is best used for readability when conditions are complex.

How do you filter a SQL Null or Empty String? A null value in a database really means the lack of a value. It is a special “value” that you can’t compare to using the normal operators. You have to use a clause in SQL IS Null. On the other hand, an empty string is an actual value that can be compared to in a database.

I also believe there are sometimes legitimate uses for a nothing script (automatically generated scripts for example).

Although it's an old thread, I'll put in my two cents. I think declaring a variable is one of the most benign statements you can use. The statement doesn't even show up in execution plans:

IF (@variable = 0)
BEGIN
    DECLARE @placeHolder BIT;
END

We can have multiple conditions in Case statement; however, it works in a sequential model. If one condition is satisfied, it stops checking further conditions We cannot use a Case statement for checking NULL values in a table Conclusion. The Case statement in SQL provides flexibility in writing t-SQL for DDL and DML queries.

while 1 = 0 break

In function I can not use:

if 1 = 0 print ''
if 1 = 0 set nocount on
if 1 = 0 waitfor delay '00:00'
if 1 = 0 throw 50000, '', 10
if 1 = 0 select 1
if 1 = 0 return

Labels or variables cannot be declared twice.

Empty statement in T-SQL. Ask Question Asked 9 years, 11 months ago. Active 7 months ago. Viewed 17k times 29. 3. Is there an empty statement keyword in T-SQL in Sql

Useful T-SQL queries for SQL Server to explore database schema. Product . Product Overview. Database Documentation. ER Diagrams. Empty tables in our SSRS

Now that we have been familiar with Create, Alter and Drop – Database and Table, it is time to be familiar with T-SQL statements. Let’s start this chapter with the definition of T-SQL followed by a detailed discussion on T-SQL’s SELECT statement. Transact SQL (T-SQL) Transact SQL (T-SQL) is a proprietary extension of SQL (structured Query Language) by Microsoft […]

Comments
  • What are you trying to achieve?
  • OK. Thanks. I need it for my SQL generator. But anyway it seems that I must remove an empty branch (IF/ELSE, CASE) earlier, from my intermediate objects. I found that empty statement can be "emulated" by an empty block (BEGIN END) but it doesn't look good.
  • My use case is just like this person's: social.msdn.microsoft.com/Forums/sqlserver/en-US/… To have temporary debug statements that can be quickly commented out. I have since switched to a different pattern.
  • Thank you, I think this is the best way to do nothing because it really does nothing, it's declarative only. I'm going to use this for my automated translation of stored procedure code from Firebird to SQL-Server, because Firebird allows empty blocks while SQL-Server does not. At least for the cases where the begin-end block can't be trivially removed.
  • Great. And note that same label cannot be defined more than once.. That's why you should name it as no_op1 2 3...
  • For reference, MSDN explicitly says that empty BEGIN...END blocks are disallowed: msdn.microsoft.com/en-us/library/ms189079(sql.90).aspx
  • It is not the best way. Labels is not repetitive. They have to be unique an entire batch (GO), otherwise they causes exceptions
  • yep i think the 'if null = null select null' is as close to the // NOOP empty cases in a normal C type language
  • I really like the if null = null select null version, because it's repeatable within a scope, in case this needs to be done more often and it doesn't have any side effects
  • IF NULL = NULL SELECT NULL and nothing more. Thanks!
  • @LukasEder if null>null would be safer. null=null can resolve to true if SET ANSI_NULLS OFF
  • @MartinSmith: Nice catch! Of course, if 1 = 0 might be even more straightforward. null > null might need an extra comment to explain what looks very unusual
  • This approach is not for repetitions. You can't declare a variable twice during a batch (GO).