|
Как заменить в строке группу символов на определенный
|
|||
---|---|---|---|
#18+
Подскажите пожалуйста, возможно-ли как-нибудь заменить по маске все буквы на цифры что-то вроде replace(@a,%[^0-9]%,'*') тоесть заменить все буквы на *, можно конечно циклом заменить по 1 симоволу в строке, пока не будут заменены все,но ведь полюбому можно как-нить по короче :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2007, 09:09 |
|
Как заменить в строке группу символов на определенный
|
|||
---|---|---|---|
#18+
declare @DANO varchar(1024), @a varchar(1024) set @DANO = 'У клиента #1(Test) скида составляет 12% процентов.' set @a = replace(SUBSTRING(@DANO,1,CHARINDEX('%',@DANO)),' ','') declare @i int set @i= patindex('%[^0-9]%',@a) while @i >0 begin set @a = replace(@a,SUBSTRING(@a,@i,1),'*') set @i= patindex('%[а-я]%',@a) if @i = 0 set @i= patindex('%[a-z]%',@a) print @i print @a end print @a Вот этот код никак нельзя оптимизировать? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2007, 09:19 |
|
Как заменить в строке группу символов на определенный
|
|||
---|---|---|---|
#18+
BERSERCно ведь полюбому можно как-нить по короче :)Откуда такая уверенность? Вы знаете метод? Зачем тогда спрашиваете? ;) Такого "встроенного" метода нет, и думаю - никогда и не будет - реализовать его "вручную" несложно. Можно (недокументированно, правда) - с использованием таблички с последовательностью чисел. :) Типа такого: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2007, 09:23 |
|
Как заменить в строке группу символов на определенный
|
|||
---|---|---|---|
#18+
Мне на самом дела надо поучить из строки, вводимой вручную скирку в %,причем строка вводится в произвольной форме , вот кусочек кода который достаточно криво выполняет эту функцию , а как сделть этоже вышим способом? declare @DANO varchar(1024), @a varchar(1024) set @DANO = 'У клиента #1(Test) скида составляет 23 (12 %) процентов.' set @a = replace(SUBSTRING(@DANO,1,CHARINDEX('%',@DANO)),' ','*') declare @i int set @i= patindex('%[^0-9]%',@a) while @i >0 begin set @a = replace(@a,SUBSTRING(@a,@i,1),'*') set @i= patindex('%[а-я]%',@a) if @i = 0 set @i= patindex('%[a-z]%',@a) end set @a = replace( RIGHT(@a,PATINDEX('%[0-9][^0-9]%',REVERSE(@a )) ),'*','') print @a ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2007, 09:32 |
|
Как заменить в строке группу символов на определенный
|
|||
---|---|---|---|
#18+
Имхо, либо циклом, либо SQL2005 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2007, 09:36 |
|
Как заменить в строке группу символов на определенный
|
|||
---|---|---|---|
#18+
BERSERCМне на самом дела надо поучить из строки, вводимой вручную скирку в % Так Вам надо просто извлечь первую с начала строки непрерывную последовательность цифр? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2007, 09:43 |
|
Как заменить в строке группу символов на определенный
|
|||
---|---|---|---|
#18+
нет мне надо извлечель последовательность цифр перед % (между ними возможно пробел будет) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2007, 09:45 |
|
Как заменить в строке группу символов на определенный
|
|||
---|---|---|---|
#18+
Лан всем спасибо, вроде кое-как работает. Меня кстати порадовал способ получения последовательности до 255 при помощи системной таблички :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2007, 10:00 |
|
Как заменить в строке группу символов на определенный
|
|||
---|---|---|---|
#18+
BERSERCнет мне надо извлечель последовательность цифр перед % (между ними возможно пробел будет)Ну, тут все проще. :) Итак, что нам нужно: 1 Взять строку ДО процента - это элементарно: Код: plaintext
Далее - нужно найти последнюю последовательность чисел учитывая, что она может прерываться пробелами. Сначала можно просто вырезать пробелы: Код: plaintext
Дальше - применяем REVERSE+PATINDEX+REVERSE: Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2007, 10:07 |
|
Как заменить в строке группу символов на определенный
|
|||
---|---|---|---|
#18+
BERSERCЛан всем спасибо, вроде кое-как работает. Меня кстати порадовал способ получения последовательности до 255 при помощи системной таблички :))Да этих способов - миллион. ;) И этот не самый "хороший". ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2007, 10:08 |
|
Как заменить в строке группу символов на определенный
|
|||
---|---|---|---|
#18+
BERSERCнет мне надо извлечель последовательность цифр перед % (между ними возможно пробел будет)Пробел между самими цифрами или цифрами и %? Если пробелы МЕЖДУ ЦИФРАМИ не нужны - можно отказаться от REPLACE и сделать все вообще в одну строку. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2007, 10:11 |
|
Как заменить в строке группу символов на определенный
|
|||
---|---|---|---|
#18+
Пробелмы между цифрами и %, причем может быть строка типа "скидка клиента № 1 12 %" если мы просто уберем все пробелы то получим скидку 112 % ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2007, 10:30 |
|
Как заменить в строке группу символов на определенный
|
|||
---|---|---|---|
#18+
DeColo®es BERSERCЛан всем спасибо, вроде кое-как работает. Меня кстати порадовал способ получения последовательности до 255 при помощи системной таблички :))Да этих способов - миллион. ;) И этот не самый "хороший". Согласен, не самый "хороший". Для таких случаев, лучше вообще иметь такую табличку в БД постоянно. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2007, 11:37 |
|
Как заменить в строке группу символов на определенный
|
|||
---|---|---|---|
#18+
на дворе 2020-ый, а майки так и не сподобились что-то типа оракловского REGEXP_REPLACE прикрутить. или я ошибаюсь? в любом случае для себя пока вот такого "монстра" использую, если кому "на коленке" подойдет. в данном случае оставляет только цифры, точку, запятую (по моей задаче). что поменять под себя - видно. Код: sql 1. 2. 3. 4.
и еще коллега вот такой вариант предложил. тоже работает, быстрее чем мой раза в 4, но требует своей нехитрой функции выдачи ряда int-значений Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 13:23 |
|
Как заменить в строке группу символов на определенный
|
|||
---|---|---|---|
#18+
wizus3 на дворе 2020-ый, а майки так и не сподобились что-то типа оракловского REGEXP_REPLACE прикрутить. или я ошибаюсь? дык, CLR добавили, и после этого стало не нужно :) FAQ: Regex. Парсим, заменяем, разбиваем, крутим/вертим... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 14:37 |
|
|
start [/forum/topic.php?fid=46&fpage=47&tid=1685604]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 139ms |
0 / 0 |