JSON_VALUE() 不适用于 Azure SQL 数据仓库,即使兼容级别为 130。
尽管将 compatility_level 设置为 130,但似乎我无法让 JSON_VALUE 在 Azure SQL 数据仓库上工作。参考: https ://docs.microsoft.com/en-us/sql/t-sql/functions/json-functions-transact-sql?view=sql-server-2017
CREATE TABLE dbo.test (
doc_name VARCHAR(255) NOT NULL,
code VARCHAR(80) NOT NULL,
currentState_id INT NULL,
json_doc NVARCHAR(MAX) null ) WITH (
DISTRIBUTION = HASH ( doc_name ),
CLUSTERED INDEX ( doc_name ASC ) );
insert into dbo.test ([doc_name],[code],[currentState_id],[json_doc]) values ('doc1.txt','doc1',1,'{"one":"value1","two":"value2"}');
select JSON_VALUE(json_doc,'$.one') from dbo.test where code = 'doc1';
-- Msg 104162, Level 16, State 1, Line 17
-- 'JSON_VALUE' is not a recognized built-in function name. SELECT compatibility_level FROM SYS.databases where name = my_DW';
-- returns 130
据我了解,根据文档,如果兼容性级别为 130,JSON_VALUE 应该适用于 Azure SQL 数据仓库。