SQL Server Management Studio Dark Theme

Facebooktwittergoogle_plusredditpinterestlinkedinmail

If you like the dark theme of Visual Studio and wish that you had the dark theme for SQL Server Management Studio (SSMS), look no further.  Management Studio actually comes with a dark theme, but it just isn’t enabled.  It’s super simple to enable this feature.  Here’s how.

Note: I’ve confirmed this works with SQL Server 2016.

Here is what my current themed Management Studio looks like:
SQL Server Management Studio Dark Theme Light

 

The place in SQL Server Management Studio that we set the color theme is in the Options.  To see what we currently have, you go to the options by clicking Tools –> Options…
SQL Server Management Studio Dark Theme Options

From there we navigate to Environment –> General.  On the right side we can see Color theme:.  This option shows the current color theme that you are SSMS is using.
SQL Server Management Studio Dark Theme Options

My only options in the drop-down are Blue and Light:
SQL Server Management Studio Dark Theme Options

To allow the Dark theme to be selected, all we need to do is make a small change to the ssms.pkgundef file.  This file is located at: “C:\program files (x86)\Microsoft SQL Server\130\tools\binn\managementstudio\ssms.pkgundef”.

 

Step 1) Close SQL Server Management Studio and then browse to the ssms.pkgundef file and open it with Notepad.  The easiest way I found is to right click on the file and choose Edit.

TIP: If you can’t save the file after editing it, you may need to launch Notepad as administrator.

SQL Server Management Studio Dark Theme Edit

Step 2) Find the // Remove Dark theme key.  The easiest way is to just do a search in Notepad.
SQL Server Management Studio Dark Theme Edit

Step 3) Add 2 slashes (//) in front of this key that starts with [$RootKey$\Themes\.  Save and close the file.
SQL Server Management Studio Dark Theme Edit

Step 4) Relaunch SQL Server Management Studio.  Go back in to the options and select the Dark theme.
SQL Server Management Studio Dark Theme Done

This is what your final product should look like!  Enjoy!
SQL Server Management Studio Dark Theme Dark

 

SQL Server Minus Operator

Facebooktwittergoogle_plusredditpinterestlinkedinmail

The MINUS operator is an Oracle operator and does not exist in SQL Server. SQL Server has its own operator that does this called EXCEPT. The usage of these two operators are the same between Oracle and SQL Server.

 
The EXCEPT Operator
The EXCEPT operator will take two queries and only show the records in the first query that do not exist in the second query. Here is an example of how this would work.

 
The above query will show all the animals from the Animal table where the animals are not in the ExtinctAnimal table.

 
 
Reference: https://msdn.microsoft.com/en-us/library/ms188055.aspx

What Is ANSI_PADDING

Facebooktwittergoogle_plusredditpinterestlinkedinmail

If you work with stored procedures or if you script objects in SQL Server, you have probably seen SET statements that turn on/off some crazy thing called ANSI_PADDING. If you’re like most people, you just ignore this because it works. I wanted to take a few minutes to explain what this ANSI_PADDING thing is.

 
What Is ANSI_PADDING?
ANSI_PADDING is an option that controls how VARCHAR and VARBINARY values are stored. If ANSI_PADDING is turned on, then SQL Server will NOT trim the trailing spaces when it inserts into a VARCHAR field. Similarly, it will NOT trim trailing nulls when it inserts into a VARBINARY field.

 
Setting the ANSI_PADDING only affects the spaces on inserts. It does NOT affect comparisons.

Syntax For Setting The ANSI_PADDING:

LIKE in SQL

Facebooktwittergoogle_plusredditpinterestlinkedinmail

The LIKE operator in SQL Server allows you to query data using patterns instead of exact matches. Normal select statements using the = operator will only return records where there is an exact match (usually the casing or trailing spaces do not matter). With the LIKE operator, it does not need to be an exact match.

LIKE
The most basic concept of the like operator is that it allows you to query data without using an exact match in the WHERE clause. It allows you to use some wildcard characters to get the results you are looking for. Here is a basic example:

AnimalID AnimalName AnimalType Animal Weight
35 Giant Squid Fish 400
36 Giant Panda Mammal 500
37 Giant Clam Fish 60

The above statement uses the % as a wildcard. It basically says, show me any animals that start with the word Giant. This would return things like Giant Panda, Giant Squid, and Giant Clam.

Although % is the most common wildcard that is used with LIKE, there are many more. Here is a list of all the allowed wildcards.

%
Will allow zero or any characters. You can use this before, after, or in-between any string.

AnimalID AnimalName AnimalType Animal Weight
35 Giant Squid Fish 400
36 Giant Panda Mammal 500
37 Giant Clam Fish 60
38 Emperor Penguin Bird 15
39 Hammer Head Shark Fish 90

 
_
Will allow any 1 character.

AnimalID AnimalName AnimalType Animal Weight
18 Chicken Bird 5

 
[]
Will allow 1 character that is specified in the brackets. There are two ways to specify this. [a-d] or [abcd].

The following example will match both goose and moose.

AnimalID AnimalName AnimalType Animal Weight
11 Goose Bird 15
27 Moose Mammal 1000

 
The following example will match both cat and bat, but it will NOT match rat.

AnimalID AnimalName AnimalType Animal Weight
10 Cat Mammal 10
34 Bat Bird 1

 
[^]
Will match any 1 character that is NOT specified in the brackets. There are two ways to specify this. [^a-d] or [^abcd].

The following example will match horse, but will NOT match zorse… and yes, zorse is an animal… I found it on the internet.

AnimalID AnimalName AnimalType Animal Weight
6 Horse Mammal 750

 
The following example will match rat, but will NOT match bat or cat.

AnimalID AnimalName AnimalType Animal Weight
33 Rat Mammal 1

 
Important
If you are comparing a CHAR data type with the like operator, it may not work correctly. This because when you save data to a CHAR field it will space pad the field to the size of the field. To get around this, you need to trim the spaces from the end of the field.

 
NOT Like
If you want to match where a pattern is NOT like a string, simply put the word NOT in front of the word LIKE.

 
 
Escaping The Wildcard
From time to time you will need to actually search for a pattern containing one of the wildcard characters. Let’s say that you wanted to search for anything in a string that had 10% in it. The % (percent symbol) is a reserved word with the LIKE operator. You would search for the % character by using the ESCAPE clause.

In the query above, you can see that !% in the comparison string means to the literal character %. The ESCAPE clause tells the query to not apply the wildcard rules to any character following the specified characters. In this case, we are specifying the ! (exclamation mark).

InvoiceID ItemName LineItemDescription
1 Coupon Code 10% off web coupon

 
Reference: https://msdn.microsoft.com/en-us/library/ms179859.aspx

How To Pull Single Value From XML

Facebooktwittergoogle_plusredditpinterestlinkedinmail

SQL Server has a built in method for easily pulling one value from an XML. To do this you use the method called .value(). The .value method will run an XQuery against the XML specified in the query. This method is scalar, so it will only return 1 value. You cannot use this to return multiple values.

In the query above, you can see that you can just pass the xpath and the datatype that you want the output to be. This will pull that value out of the XML and put it in the specified format. You can see that after the xpath, there is a funny syntax [1]. This tells SQL Server to grab the first instance of the AnimalName node. You need to do this because the .value() method only returns one value and will not work with a repeating node.

Reference: https://msdn.microsoft.com/en-us/library/ms178030.aspx