Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर 2012 के लिए JSON_VALUE?

ठीक है क्योंकि ऐसा लगता है कि किसी के पास अभी तक देने के लिए कुछ भी नहीं है, यहाँ वह कोड है जो मैंने अब तक लिखा है। शायद यह मेरे जूते में अगले व्यक्ति की मदद करेगा। मैंने जिस प्रकार के मूल्य को पुनः प्राप्त कर रहा हूं, उसके आधार पर मैंने अलग-अलग कार्यों के साथ जाने का फैसला किया। विशेष ध्यान देने योग्य बात यह है कि दिनांक फ़ंक्शन एक मान प्राप्त करने के लिए है जो 1970 के बाद से मिलीसेकंड की संख्या है, और दशमलव फ़ंक्शन में यह निर्दिष्ट करने के लिए एक पैरामीटर है कि क्या मान उद्धृत किया गया है या नहीं।

create function [dbo].[GetJsonDateValue](@Key varchar(100), @data nvarchar(max))
returns datetime
as
begin
    declare @keyIdx int = charindex(@Key, @data)
    declare @valueIdx int = @keyIdx + len(@Key) + 2 -- +2 to account for characters between key and value
    declare @termIdx int = charindex(',', @data, @keyIdx)

    -- In case it's last item in an object
    if @termIdx = 0
    set @termIdx = charindex('}', @data, @keyIdx)

    declare @valueLength int = @termIdx - @valueIdx
    declare @secondsSince1970 bigint = cast(substring(@data, @valueIdx, @valueLength) as bigint) / 1000

    declare @retValue datetime = dateadd(s, @secondsSince1970, '19700101')
    return @retValue
end
GO

CREATE function [dbo].[GetJsonDecimalValue](@Key varchar(100), @data nvarchar(max), @quoted bit)
returns decimal(9,2)
as
begin
    declare @keyIdx int = charindex(@Key, @data)
    declare @valueIdx int = @keyIdx + len(@Key) + 2 -- +2 to account for characters between key and value
            + case when @quoted = 1 then 1 else 0 end -- +1 more for quote around value if present
    declare @termIdx int = charindex(case @quoted when 1 then '"' else ',' end, @data, @valueIdx)

    -- In case it's last item in an object and not quoted
    if @quoted = 0 and @termIdx = 0
    set @termIdx = charindex('}', @data, @keyIdx)

    declare @valueLength int = @termIdx - @valueIdx

    if @valueLength = 0
    return null

    declare @retValue decimal(9,2) = cast(substring(@data, @valueIdx, @valueLength) as decimal(9,2))
    return @retValue
end
GO

CREATE function [dbo].[GetJsonStringValue](@Key varchar(100), @data nvarchar(max))
returns varchar(max)
as
begin
    declare @keyIdx int = charindex(@Key, @data)
    declare @valueIdx int = @keyIdx + len(@Key) + 3 -- +3 to account for characters between key and value
    declare @termIdx int = charindex('"', @data, @valueIdx)

    declare @valueLength int = @termIdx - @valueIdx
    declare @retValue varchar(max) = substring(@data, @valueIdx, @valueLength)
    return @retValue
end
GO


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. संग्रहीत प्रक्रिया:एक्सएमएल को एक तर्क के रूप में पास करें और INSERT (कुंजी/मूल्य जोड़े)

  2. SQL सर्वर 2005 पर SQL Server 2008 के लाभ?

  3. पूर्णांक मानों के साथ तैयार कथन को कई बार निष्पादित नहीं किया जा सकता है

  4. MONTH () SQL सर्वर में उदाहरण (T-SQL)

  5. दो तिथियों के बीच सप्ताह के दिनों (रविवार, सोमवार, मंगलवार) की संख्या प्राप्त करें SQL