|
Замена символов в строке
|
|||
---|---|---|---|
#18+
Добрый день, Мне нужно изменить строки типа 1ABCD 1AC 1ACE 2A 2AC на 1A,1B,1C,1D 1A,1C 1A,1C,1E 2A 2A,2C Можно ли это сделать при помощи обычной функции REPACE или нужно писать цикл? В общем как это проще всего сделать? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 04:19 |
|
Замена символов в строке
|
|||
---|---|---|---|
#18+
Roust_m, если это надо сделать один раз, то сделайте это циклом, экспортируйте в текст, потом поправьте как надо и импортируйте обратно, натравите внешний скрипт обновляющий данные если это надо делать постоянно, не храните данные так, используйте триггер или парсите это в приложении перед вставкой ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 04:35 |
|
Замена символов в строке
|
|||
---|---|---|---|
#18+
Roust_m, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
idxz11A11B11C11D21A21C31A31C31E42A52A52C ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 07:17 |
|
Замена символов в строке
|
|||
---|---|---|---|
#18+
даа, и "склеить" обратно Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
idxz11A,1B,1C,1D21A,1C31A,1C,1E42A52A,2C ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 07:27 |
|
Замена символов в строке
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 08:18 |
|
Замена символов в строке
|
|||
---|---|---|---|
#18+
Roust_m, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
Модератор: Используйте tag SRC ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 14:51 |
|
Замена символов в строке
|
|||
---|---|---|---|
#18+
Roust_m, авторкак это проще всего сделать Проще всего создать несколько CLR функций для работы с регулярными выражениями, в инете полно описаний. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 15:54 |
|
Замена символов в строке
|
|||
---|---|---|---|
#18+
Владислав Колосов Roust_m, авторкак это проще всего сделать Проще всего создать несколько CLR функций для работы с регулярными выражениями, в инете полно описаний. Глупо. Эти функции производят массу лишней вычислительной работы. ЗЫ. Зря, что-ли, мелкософт не вводит в T-SQL такие "функции". ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 16:53 |
|
Замена символов в строке
|
|||
---|---|---|---|
#18+
Пиписькомер :) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161.
descrelapsed_time_mssplit and string_agg b invm1231cycle by aleks2223482RegexpReplace wrapper4347by court13766scalar function by MaksK15643 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 18:46 |
|
Замена символов в строке
|
|||
---|---|---|---|
#18+
Если соревноваться "на скорость" - надо немного индексов дописать. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 18:52 |
|
Замена символов в строке
|
|||
---|---|---|---|
#18+
aleks222 Если соревноваться "на скорость" - надо немного индексов дописать. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 19:36 |
|
Замена символов в строке
|
|||
---|---|---|---|
#18+
aleks222, речь шла о "проще", а не "быстро". Проще - регулярные выражения, вне конкуренции. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 21:32 |
|
Замена символов в строке
|
|||
---|---|---|---|
#18+
Владислав Колосов aleks222, речь шла о "проще", а не "быстро". Проще - регулярные выражения, вне конкуренции. Иллюзия. У каждого "свое регулярное выражение". Сколько раз я сталкивался с необходимостью править - стока раз и отгребал немерянный геморрой. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2021, 05:41 |
|
Замена символов в строке
|
|||
---|---|---|---|
#18+
invm aleks222 Если соревноваться "на скорость" - надо немного индексов дописать. доп. поле N = длине исходного текста + кластерный индекс по этому полю + where N <= @n ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2021, 05:43 |
|
Замена символов в строке
|
|||
---|---|---|---|
#18+
aleks222 доп. поле N = длине исходного текста + кластерный индекс по этому полю + where N <= @n ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2021, 09:37 |
|
Замена символов в строке
|
|||
---|---|---|---|
#18+
aleks222 Если соревноваться "на скорость" - надо немного индексов дописать. Не, скорость не нужна, ибо там всего 2-3 тысячи записей. Нужна простота, чтобы поменьше кода и багов было. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2021, 03:12 |
|
Замена символов в строке
|
|||
---|---|---|---|
#18+
Roust_m, при использовании регулярных выражений это будет всего одна строка, что-то вроде написанного выше (выражение можно упростить): Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2021, 11:01 |
|
Замена символов в строке
|
|||
---|---|---|---|
#18+
Владислав Колосов Roust_m, при использовании регулярных выражений это будет всего одна строка, что-то вроде написанного выше (выражение можно упростить): Код: sql 1. 2.
Проблема не в "одной строке" - проблема в голове. Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2021, 12:01 |
|
Замена символов в строке
|
|||
---|---|---|---|
#18+
Доработанный "писькомер", с учетом пожелания алекса и замечания Владислава Колосова Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206.
Без кластерного индекса descrexecution_counttotal_worker_timetotal_elapsed_timesplit and string_agg by invm155707365574050split and string_agg by invm (optimization spool+sort off)160299076031316by court11072529110728791RegexpReplace wrapper11264266312759471scalar function by MaksK12042599620428520cycle by aleks222252653689226551510 С кластерным индексом descrexecution_counttotal_worker_timetotal_elapsed_timesplit and string_agg by invm128853732886588split and string_agg by invm (optimization spool+sort off)136568943658163by court184948228508147RegexpReplace wrapper11057879710723925cycle by aleks222251095822610958685scalar function by MaksK11720619317207736 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2021, 12:10 |
|
Замена символов в строке
|
|||
---|---|---|---|
#18+
Что-то у тебя показания сильно гуляют? Не, есть, канешно, и стабильные герои. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2021, 12:16 |
|
Замена символов в строке
|
|||
---|---|---|---|
#18+
invm, мой эксперимент показал, что при использовании CLR функции, которая содержит только RETURN input_paramert невозможно получить результат при вставке в новую таблицу лучше, чем 400 мсек в среднем. Т.е. это теоретический предел, который можно достигнуть специализированной функцией для разбора и формирования новой строки. Вашим же примером достигается результат 200мсек. Использование регулярного выражения в место специализированной функции ухудшает результат приблизительно в два раза, по простота выражения при этом сохраняется плюс появляется возможность повторного использования в коде при обработки сложных строк. Если требуется "простота", то CLR функция - это компромисс по производительности. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2021, 12:25 |
|
Замена символов в строке
|
|||
---|---|---|---|
#18+
aleks222, Владислав Колосов Это намеки на подтасовку? Ну так скрипт и результаты опубликованы. CLR-функция использовалась такая Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
Сервер Код: sql 1. 2. 3. 4.
Так что теперь можете экспериментировать самостоятельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2021, 13:21 |
|
Замена символов в строке
|
|||
---|---|---|---|
#18+
invm aleks222, Владислав Колосов Это намеки на подтасовку? Так что теперь можете экспериментировать самостоятельно. Не, дарагой, мне лень. Я и без твоих изысков представляю недостатки и достоинства вариантов. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2021, 13:28 |
|
|
start [/forum/topic.php?fid=46&fpage=22&tid=1684628]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
81ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 189ms |
0 / 0 |