Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2012, 22:10   #1
lyb4eg
Пользователь
 
Регистрация: 06.08.2011
Сообщений: 76
По умолчанию Розбивка столбца...

Подскажите пожалуйста, как с помощью запроса разделить (при выборке) столбец таблицы?
Например столбец:
___________________
Описание |
___________________
123 ЗП qwe
345r43ЗПd,
wer3rЗП 2423f3f

- разделитель "ЗП" , в результате должно получиться:
___________________ ___________________
Описание1 | Описание2 |
___________________ ___________________
123 |ЗП qwe
345r43 |ЗПd,
wer3r |ЗП 2423f3f
Не понимаю как это сделать(.
lyb4eg вне форума Ответить с цитированием
Старый 12.01.2012, 22:36   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Для MS SQL будет выглядеть примерно так
Код:
SELECT 
--  до ЗП или NULL если не найдено
    CAST((CASE WHEN CHARINDEX('ЗП',Pole)>0 
      THEN LEFT(Pole,CHARINDEX('ЗП',Pole)-1) ELSE NULL END) AS varchar(20)) AS BeforeText,
--  после ЗП (включая и его) или NULL если не найдено
    CAST((CASE WHEN CHARINDEX('ЗП',Pole)>0 
      THEN RIGHT(Pole,LEN(Pole)-CHARINDEX('ЗП',Pole)+1) ELSE NULL END) AS varchar(20)) AS AfterText,
--  само поле на всякий случай или убрать
    Pole
  FROM Table1
  WHERE ...
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 13.01.2012 в 09:51.
Аватар вне форума Ответить с цитированием
Старый 16.01.2012, 01:23   #3
lyb4eg
Пользователь
 
Регистрация: 06.08.2011
Сообщений: 76
По умолчанию

Извините пожалуйста, я просто не совсем понимаю как это должно работать... У мене вообще ошибка - From - не найдено там где оно ожидалось ...
Вот если таблица как в скриншоте, как воспроизвести -

"после ЗП (включая и его) или NULL если не найдено
CAST((CASE WHEN CHARINDEX('ЗП',Pole)>0
THEN RIGHT(Pole,LEN(Pole)-CHARINDEX('ЗП',Pole)+1) ELSE NULL END) AS varchar(20)) AS AfterText," ?
Изображения
Тип файла: jpg Безымянный.JPG (7.3 Кб, 102 просмотров)
lyb4eg вне форума Ответить с цитированием
Старый 17.01.2012, 02:03   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Что-то мне кажется, что вместо Pole нужно вставить имя вашей колонки, вместо Table1 - имя вашей таблицы. И за синтаксисом внимательно проследить, скорее всего запятую потеряли или лишняя. Комментарий убрать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.01.2012, 03:46   #5
lyb4eg
Пользователь
 
Регистрация: 06.08.2011
Сообщений: 76
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Что-то мне кажется, что вместо Pole нужно вставить имя вашей колонки, вместо Table1 - имя вашей таблицы. И за синтаксисом внимательно проследить, скорее всего запятую потеряли или лишняя. Комментарий убрать
Это я сделал, действительно, упустил запятую... Но тут возникла еще одна ошибка (((( в этом случае я совсем в ступоре.... Так как здесь 100% все правильно ! ...

Select CAST((CASE WHEN CHARINDEX('ЗП', 1PO)>0
THEN RIGHT(1PO,LEN(1PO)-CHARINDEX('ЗП',1PO)+1) ELSE NULL END) AS varchar(20)) AfterText, 1PO
from Lyb4eg;


Ошибка - "Отсутствует правая кнопка"
Изображения
Тип файла: jpg Безымянный.JPG (134.7 Кб, 145 просмотров)
lyb4eg вне форума Ответить с цитированием
Старый 17.01.2012, 09:48   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Да не кнопка, а скобка. Со скобками все в порядке, а вот ораклу что-то не нравится. Попробуйте вместо CHARINDEX использовать INSTR, вместо LEFT и RIGHT - SUBSTR. Параметры естественно по другому у этих функций
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.01.2012, 14:01   #7
lyb4eg
Пользователь
 
Регистрация: 06.08.2011
Сообщений: 76
По умолчанию

Ночью уже не соображал, до скобка... Не могу заменить RIGHT, LEN, CHARINDEX - эти функции не поддерживаются plsql(
lyb4eg вне форума Ответить с цитированием
Старый 17.01.2012, 14:07   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

RIGHT и CHARINDEX в #6 написано чем заменить, для LEN - LENGTH. Google рулит
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.01.2012, 14:57   #9
lyb4eg
Пользователь
 
Регистрация: 06.08.2011
Сообщений: 76
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
RIGHT и CHARINDEX в #6 написано чем заменить, для LEN - LENGTH. Google рулит

Извините, неправильно выразился. Если сделать замену как Вы сказали, то запрос будет работать неправильно... Или я неправильно делаю замену?...

Select CAST((CASE WHEN INSTR('ЗП', PO)>0
THEN SUBSTR(PO,LENGTH(PO)-INSTR('ЗП',PO)+1) ELSE NULL END) AS varchar(20)) AfterText, PO
from Lyb4eg;

AfterText | PO
(null) 123 ЗП qwe
(null) 345r43ЗПd,
(null) wer3rЗП 2423f3f
lyb4eg вне форума Ответить с цитированием
Старый 17.01.2012, 15:06   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А справку по этим функциям слабо глянуть? Не так, и INSTR, и SUBSTR
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрица, вставка столбца после столбца с max элементом Phelps Общие вопросы C/C++ 2 24.03.2011 17:15
Сумма из одного столбца с числами в зависимости от интервала дат из другого столбца Severny Microsoft Office Excel 10 14.03.2011 10:13
Удаление строк столбца совпадающих со строками другого столбца ShamanGood Microsoft Office Excel 23 18.09.2010 09:26
импорт столбца silatal Microsoft Office Access 3 22.10.2008 15:25
В прямоугольной матрице переставить столбцы так, чтобы сумма элементов столбца росла от первого столбца Aleo13 Помощь студентам 5 15.10.2008 18:34