одним запросом обработать базу на предмет наличия в полях символа

zul

Новичок
одним запросом обработать базу на предмет наличия в полях символа

А именно символа "-" в началах некоторых полей - хотел спросить, нельзя ли без использования php удалить первый символ "-", при условии, что он есть.

пример:
id | name | phone |
1 | -Иван | 123-4455 |
2 | Петр | -123-4566 |

результат:
id | name | phone |
1 | Иван | 123-4455 |
2 | Петр | 123-4566 |
 

Demiurg

Guest
можно для этого надо использовать if и substring
 

Alexandre

PHPПенсионер
в мускуле нельзя, в MsSQL Server элементарно

Как вариант можно выдать:
Вариант 1 : через Ж....

id | name | phone |name 1| phone1 |


1 | -Иван | 123-4455 | Иван | 23-4455 |
2 | Петр | -123-4566 |2 | етр | 123-4566 |

Третий и четвертый столбик является повторением первого и второго но уже без первого символа,
соответственно все равно надо проверять на клиенте (т.е. php скрипте ) наличие первого символа и уже читать из первого или второго поля.

Вариант 2 : опять через Ж....

1) организовать временную таблицу, в которую записать все слова с минусом, но уже без минуса,
[sql]INSERT INTO TMP_TAB ( SELECT ..., SUBSTRING(name,1) , ... FROM TAB WHERE SUBSTRING(name,0,1) ='-' ) [/sql]

2) а потом все без минуса:
[sql]INSERT INTO TMP_TAB * FROM TAB WHERE SUBSTRING(name,0,1) !='-' ) [/sql]

3) Ну и читать из этой таблицы селектом

2) Прочитать все из

Вариант 3 : и снова через Ж....
написать составной запрос, который мускул возможно не поддерживает (чисто теоретический)

[sql]
SELECT ..., SUBSTRING(name,1) , ...
FROM TAB WHERE SUBSTRING(name,0,1) ='-' )
JOIN
SELECT ..., name,1 , ...
FROM TAB WHERE SUBSTRING(name,0,1) !='-' )

[/sql]
 

chira

Новичок
Код:
UPDATE tab SET name = substring(name,2)
WHERE  name like '-%'
так же для остальных полей
естественно будет не один запрос или это очень критично?
или IF, LEFT, SUBSTRING
 
Сверху