diff --git a/server/store/adapters/rdbms/drivers/mssql/dialect.go b/server/store/adapters/rdbms/drivers/mssql/dialect.go index c2fdf8e84..64e874ed5 100644 --- a/server/store/adapters/rdbms/drivers/mssql/dialect.go +++ b/server/store/adapters/rdbms/drivers/mssql/dialect.go @@ -82,7 +82,7 @@ func (d mssqlDialect) JsonExtract(jsonDoc exp.Expression, pp ...any) (path exp.E if path, err = jsonPathExpr(pp...); err != nil { return } else { - return exp.NewSQLFunctionExpression("JSON_QUERY", jsonDoc, path), nil + return exp.NewLiteralExpression("CASE WHEN ISJSON(?) = 1 THEN ? ELSE NULL END", jsonDoc, exp.NewSQLFunctionExpression("JSON_QUERY", jsonDoc, path)), nil } } @@ -90,7 +90,7 @@ func (d mssqlDialect) JsonExtractUnquote(jsonDoc exp.Expression, pp ...any) (pat if path, err = jsonPathExpr(pp...); err != nil { return } else { - return exp.NewSQLFunctionExpression("JSON_VALUE", jsonDoc, path), nil + return exp.NewLiteralExpression("CASE WHEN ISJSON(?) = 1 THEN ? ELSE NULL END", jsonDoc, exp.NewSQLFunctionExpression("JSON_VALUE", jsonDoc, path)), nil } }