Advertisement
DataWhisperer

Untitled

Dec 10th, 2021
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.36 KB | None | 0 0
  1. drop table if exists #z;
  2. select item, item as parsed into #z from dbo.D10_staging_table
  3.  
  4. DECLARE @loop int=0
  5. while @loop<50
  6. BEGIN
  7. update #z set parsed=replace(parsed, '<>','') where parsed like '%<>%'
  8. update #z set parsed=replace(parsed, '{}','') where parsed like '%{}%'
  9. update #z set parsed=replace(parsed, '()','') where parsed like '%()%'
  10. update #z set parsed=replace(parsed, '[]','')
  11. set @loop=@loop+1
  12. END;
  13.  
  14. -- Part 1 Answer
  15. with cte as (
  16. select
  17. case when patindex('%[[,<,(]}%', parsed)>0 then 1197 else 0 end as c1 -- bad closing } --1197 pts
  18. ,case when patindex('%[[,{,(]>%', parsed)>0 then 25137 else 0 end as c2 -- bad closing > -- 25137 pts
  19. ,case when patindex('%[[,{,<])%', parsed)>0 then 3 else 0 end as c3 -- bad closing ) -- 3pts
  20. ,case when patindex('%[(,{,<]]%', parsed)>0 then 57 else 0 end as c4 -- bad closing ] --57 points.
  21. from #z
  22. where patindex('%[[,<,(]}%', parsed)>0 or patindex('%[[,{,(]>%', parsed)>0 or patindex('%[[,{,<])%', parsed) >0 or patindex('%[(,{,<]]%', parsed)>0
  23. ) select sum(c1)+sum(c2)+sum(c3)+sum(c4) from cte
  24.  
  25. -- Part 2.
  26. drop table if exists #argh;
  27. with cte as (
  28. select item, parsed,
  29. case when patindex('%[[,<,(]}%', parsed)>0 then 1197 else 0 end as c1
  30. ,case when patindex('%[[,{,(]>%', parsed)>0 then 25137 else 0 end as c2
  31. ,case when patindex('%[[,{,<])%', parsed)>0 then 3 else 0 end as c3
  32. ,case when patindex('%[(,{,<]]%', parsed)>0 then 57 else 0 end as c4
  33. from #z
  34. where patindex('%[[,<,(]}%', parsed)=0 and patindex('%[[,{,(]>%', parsed)=0 and patindex('%[[,{,<])%', parsed) =0 and patindex('%[(,{,<]]%', parsed)=0
  35. ),cte2 as( select item, parsed,replace(replace(replace(replace(reverse(parsed),'<','>'),'{','}'), '[',']'),'(',')')as reversed, len(parsed) as length_,
  36. replace(replace(replace(replace(reverse(parsed),'<','4'),'{','3'), '[','2'),'(','1') as reversed2
  37. from cte) select *, convert(bigint, 0) as result into #argh from cte2
  38.  
  39. DECLARE @loop2 Int=0
  40. while @loop2<30
  41. BEGIN
  42. update #argh set result=(result*5)+convert(int, substring(reversed2, 1,1)) where len(reversed2)>0
  43. update #argh set reversed2='' where len(reversed2)=1
  44. update #argh set reversed2=right(reversed2, len(reversed2)-1) where len(reversed2)>1
  45. set @loop2=@loop2+1
  46. END
  47.  
  48. with cte as(
  49. select row_number() over (order by result) as row#, result from #argh)
  50. select result from cte where row#=((select count(*) from cte)/2)+1
  51.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement