Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Строковые функции

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
SLameN
Отправлено: 10 Марта, 2013 - 13:05:45
Post Id


Новичок


Покинул форум
Сообщений всего: 58
Дата рег-ции: Февр. 2012  


Помог: 1 раз(а)




Добрый день, имеется таблица:

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. CREATE TABLE test5 (
  3.     id INT NOT NULL AUTO_INCREMENT,
  4.     location VARCHAR(30) NOT NULL,
  5.     city VARCHAR(30) NOT NULL,
  6.     state CHAR(2) NOT NULL,
  7.     PRIMARY KEY (id)
  8. );
  9.  
  10. INSERT INTO test5 (location) VALUES ('Текст 1, Т1');
  11.  


Необходимо сделать следующее:
1) В столбце - location данные до запятой вырезать в столбец city
2) В столбце - location данные после запятой вырезать в столбец state

Я поступил следующим образом:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. UPDATE test5 SET state = RIGHT(location, 2) WHERE id=1;
  3.  
  4. UPDATE test5 SET city = LEFT(location, 7) WHERE id=1;
  5.  
  6. ALTER TABLE test5 DROP COLUMN location;
  7.  


Все работает но есть 2 вопроса:
1) Как быть если у меня в location данные до запятой будут разной длинны?
2) Если у меня будет много строк (id) я ж не буду писать WHERE id = 1, 2 и т.п.
 
 Top
DlTA
Отправлено: 10 Марта, 2013 - 13:26:50
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




 
 Top
SLameN
Отправлено: 10 Марта, 2013 - 13:40:10
Post Id


Новичок


Покинул форум
Сообщений всего: 58
Дата рег-ции: Февр. 2012  


Помог: 1 раз(а)




Прочитал, но ответа на свой вопрос к сожалению не нашел.

Можно конечно сделать это все геморройным способом брать 4 символа справа, переносить в новый столбец, затем из нового столбца брать 2 последних символа справа и переносить в еще один столбец, и удалить лишние столбцы Улыбка
 
 Top
DlTA
Отправлено: 10 Марта, 2013 - 14:09:17
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




юзайте регулярку
 
 Top
SLameN
Отправлено: 10 Марта, 2013 - 14:25:01
Post Id


Новичок


Покинул форум
Сообщений всего: 58
Дата рег-ции: Февр. 2012  


Помог: 1 раз(а)




регулярка, это - Регулярные выражения?

А как быть с этим вопросом:

2) Если у меня будет много строк (id) я ж не буду писать WHERE id = 1, 2 и т.п.
 
 Top
DlTA
Отправлено: 10 Марта, 2013 - 19:56:41
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




SLameN пишет:
WHERE id = 1, 2

WHERE id<111... // какое там число
или
WHERE id IN(1,6,3,14,50,...) //если точно известны значения
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB