Advertisement
Guest User

Untitled

a guest
Nov 12th, 2013
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.36 KB | None | 0 0
  1. Column 1
  2. ------------------------
  3. Banana, Tomato, Carrot
  4. Orange, Apple, Chicken
  5. Peas, Potatoes, Spinach
  6.  
  7. Fruit
  8. ---------
  9. Banana
  10. Bannana
  11. Pear
  12. Oear
  13.  
  14. Column 1
  15. ------------------
  16. [Fruit][Fruit][Vegetable]
  17. [Fruit][Fruit][Meat]
  18. [Vegetable][Vegetable][Vegetable]
  19.  
  20. raw_data
  21. (
  22. user_id,
  23. food_list
  24. )
  25.  
  26. categories
  27. (
  28. food_name,
  29. food_category
  30. )
  31.  
  32. processed_data
  33. (
  34. user_id,
  35. food_category,
  36. food_cnt
  37. )
  38.  
  39. hospital_data
  40. (
  41. user_id,
  42. unknown_name
  43. )
  44.  
  45. raw_data
  46. (1, Banana, Tomato, Carrot)
  47. (2, Orange, Apple, Chicken)
  48. (3, Peas, Potatoes, pinach)
  49.  
  50. processed_data
  51. (1, Fruit, 2)
  52. (1, Vegetable, 1)
  53. (2, Fruit, 2)
  54. (2, Meat, 1)
  55. (3, Vegetable, 2)
  56.  
  57. hospital_data
  58. (3, pinach)
  59.  
  60. create FUNCTION [dbo].[fnString_DelimeterIndex]
  61. (
  62. @Text NVARCHAR(4000),
  63. @Delimiter CHAR,
  64. @Section SMALLINT
  65. )
  66. RETURNS NVARCHAR(4000)
  67. AS
  68.  
  69. BEGIN
  70. DECLARE @NextPos SMALLINT,
  71. @LastPos SMALLINT,
  72. @Found SMALLINT,
  73. @REVERSE BIT
  74.  
  75. IF @Section < 0
  76. SELECT @Text = REVERSE(@Text)--, @Section=1,@REVERSE=1
  77.  
  78. SELECT @NextPos = CHARINDEX(@Delimiter, @Text, 1),
  79. @LastPos = 0,
  80. @Found = 1
  81.  
  82. WHILE @NextPos > 0 AND ABS(@Section) <> @Found
  83. SELECT @LastPos = @NextPos,
  84. @NextPos = CHARINDEX(@Delimiter, @Text, @NextPos + 1),
  85. @Found = @Found + 1
  86.  
  87.  
  88. RETURN CASE
  89. WHEN @Found <> ABS(@Section) OR @Section = 0 THEN NULL
  90. --WHEN @REVERSE =1 THEN
  91. WHEN @Section > 0 THEN SUBSTRING(@Text, @LastPos + 1, CASE WHEN @NextPos = 0 THEN DATALENGTH(@Text) - @LastPos ELSE @NextPos - @LastPos - 1 END)
  92. ELSE REVERSE(SUBSTRING(@Text, @LastPos + 1, CASE WHEN @NextPos = 0 THEN DATALENGTH(@Text) - @LastPos ELSE @NextPos - @LastPos - 1 END))
  93. END
  94. END
  95.  
  96. insert into #Tbl values('Banana, Tomato, Carrot'),('Orange, Apple, Chicken'),('Peas, Potatoes, Spinach')
  97.  
  98. insert into #Tbl2 values('Fruit','Banana'),('Fruit','Bananana'),('Vege','Tomato'),('Vege','Carrot')
  99.  
  100.  
  101.  
  102. select '[' + isnull(tbl2.category,'NA') + ']' +
  103. '[' + isnull(tbl2_1.category,'NA') + ']' +
  104. '[' + isnull(tbl2_2.category ,'NA')+ ']'
  105. from #Tbl tbl1
  106. left join #Tbl2 tbl2 ON rtrim(ltrim(dbo.fnString_DelimeterIndex(tbl1.column1,',',1))) = tbl2.column1
  107. left join #Tbl2 tbl2_1 ON rtrim(ltrim(dbo.fnString_DelimeterIndex(tbl1.column1,',',2))) = tbl2_1.column1
  108. left join #Tbl2 tbl2_2 ON rtrim(ltrim(dbo.fnString_DelimeterIndex(tbl1.column1,',',3))) = tbl2_2.column1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement