Using Aliases in T-SQL is very common.
We can alias both Tables (FROM clause) and Columns (SELECT clause) and some other things too. It’s all pretty fundamental to writing good T-SQL queries.
Here’s an example
SELECT
dbs.collation_name
,dbs.database_id AS [DatabaseID]
,[IsReadOnly] = dbs.is_read_only
FROM
sys.databases AS dbs
JOIN
sys.master_files MF
ON
dbs.database_id = MF.database_id
WHERE
dbs.[name] = 'master';
GO
Note that we can use different styles, however, I recommend you standardise however you want to do this.
Anyway, the point of this post if to outline how aliasing is done when using the default and explicit JSON schemas in our T-SQL Queries
Here is an example of aliasing with the default schema
DECLARE @json NVARCHAR(MAX) =
N'
{
"Configuration Property": {
"Configuration name": "recovery interval (min)",
"Value": 0,
"minimum": 0,
"maximum": 32767,
"value_in_use": 0,
"description": "Maximum recovery interval in minutes",
"is_dynamic": true,
"is_advanced": true
}
}
';
SELECT
DS.
,DS.[value]
,DS.[type]
FROM
OPENJSON(@json, '$."Configuration Property"') AS DS;
GO
There’s nothing particularly unusual here.
The slightly unusual part may appear when aliasing with an explicit schema.
Here’s an example
DECLARE @json NVARCHAR(MAX) =
N'
{
"Configuration Property": {
"Configuration name": "recovery interval (min)",
"Value": 0,
"minimum": 0,
"maximum": 32767,
"value_in_use": 0,
"description": "Maximum recovery interval in minutes",
"is_dynamic": true,
"is_advanced": true
}
}
';
SELECT
ES.[Configuration name]
,ES.[Value]
,ES.[minimum]
,ES.[maximum]
,ES.[value_in_use]
,ES.[description]
,ES.[is_dynamic]
,ES.[is_advanced]
FROM
OPENJSON(@json, '$."Configuration Property"')
WITH
(
[Configuration name] NVARCHAR(35)
,[Value] NVARCHAR(100)
,[minimum] NVARCHAR(100)
,[maximum] NVARCHAR(100)
,[value_in_use] NVARCHAR(100)
,[description] NVARCHAR(100)
,[is_dynamic] BIT
,[is_advanced] BIT
) AS ES;
Note that the alias for an explicit schema come after the WITH clause.
If we try to put the alias directly after the line
OPENJSON(@json, '$."Configuration Property"')
Then we will receive an error.
While this may seem trivial it will become very useful when mixing the default schema and an explicit schema.
I hope this has helped on your SQL Server JSON journey. We’ll see more real soon.
Have a great day
Cheers
Marty