![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL. Надо обрезать символы пробельной группы
homm © (2008-01-23 15:38:00)Я весь яндекс перерыл уже.
Делаю так:
TRIM(BOTH '\n\r\t ' FROM `weight`) = '95'
Получаю результат не тот, который ожидается. Вопрос: Проблема в этом выражении, или где то еще?
Johnmen (2008-01-23 17:49:00) [1]
> homm © (23.01.08 17:25) [10]
Смотря что м.б. в полеweight.
Посмотри SUBSTRING, LOCATE, ...
homm (2008-01-23 17:25:00) [2]> [9] Johnmen © (23.01.08 17:16)
> Обрати внимание на четвертый пример.
Чьерт… Как же быть? Регекспом долго, нужно порядка 2к выборок.
Просто в PHP trim как раз выбирает все символы из списка, понадеялся что в mysql так же.
Johnmen (2008-01-23 17:16:00) [3]
> homm © (23.01.08 17:10) [8]
Судя по справке, все неверно. Т.к. ищется префикс/суффикс '\n\r\t'. А такого в значении нет. Есть '\n\r'.
Обрати внимание на четвертый пример.
homm (2008-01-23 17:10:00) [4]> [6] Johnmen © (23.01.08 16:15)
> Насколько помню, это значит обрезать последовательность '\n\r\t '.
Да.
Вот выдержка из справки:
TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)
Возвращает строку str с удаленными всеми префиксами и/или суффиксами, указанными в remstr. Если не указан ни один из спецификаторов BOTH, LEADING или TRAILING, то подразумевается BOTH. Если аргумент remstr не задан, то удаляются пробелы:
mysql> SELECT TRIM(' bar ');
-> 'bar'
mysql> SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx');
-> 'barxxx'
mysql> SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx');
-> 'bar'
mysql> SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz');
-> 'barx'
Так что по идее все верно.
Правильный_Вася (2008-01-23 16:31:00) [5]udf напиши
Johnmen (2008-01-23 16:15:00) [6]
> TRIM(BOTH '\n\r\t ' FROM `weight`) = '95'Получаю результат
> не тот, который ожидается.
Насколько помню, это значит обрезать последовательность '\n\r\t'. Значит, таким способом желаемое не выйдет...
homm (2008-01-23 15:59:00) [7]> [3] KSergey © (23.01.08 15:55)
> А это что за база такая?
MySQL
> [4] ZoldBerger (23.01.08 15:57)
> /*обрезание пробелов по бокам*/
Сабж прочти. «Пробельная группа» <> «один лишь пробел»
ZoldBerger (2008-01-23 15:57:00) [8]SELECT RTRIM(LTRIM(' <word> '))
/*обрезание пробелов по бокам*/
KSergey (2008-01-23 15:55:00) [9]А это что за база такая?
homm (2008-01-23 15:42:00) [10]Все, ветка в базах.
Теперь ответ я получу только через неделю :(
homm (2008-01-23 15:40:00) [11]В частности Есть строка, в которой
weightравно '95\n\r'. Она не находится приведенным выше выражением.