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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2011, 22:35   #1
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию Замена апострофа в запросе

Доброе время суток форумчане, у меня возник такой вопрос:
Есть небольшой запос -
Код:
select EW1 from MAIN_TABLE where ID in (replace ((select ID_ADDITION_WORDS from MAIN_TABLE where ID = 1390), ''', ' '))
Запрос - "
Код:
select ID_ADDITION_WORDS from MAIN_TABLE where ID = 1390
"- возвращает несколько ID (например: '123, 6423'), но т.к. поле "ID_ADDITION_WORDS" имеет тип string, то я попытался функцией "REPLACE", заменить апостроф на пробел (и возможно ли это), но у меня ничего не получается, в чем состоит ошибка?
Заранее спасибо
KBO вне форума Ответить с цитированием
Старый 05.11.2011, 23:26   #2
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Можно всё что позволяет ваша СУБД. Ваша Субд позволяет сравнивать без преобразования целочисленое значение со строкой? сомневаюсь... В вашей СУБД присутствует функция replace как вы её представляете? Возможно вам изучить документацию к вашей СУБД.

опять же странно что
Цитата:
Запрос - "
Код:

select ID_ADDITION_WORDS from MAIN_TABLE where ID = 1390
"- возвращает несколько ID (например: '123, 6423')
нууу уж очень это странное поведение базы мягко говоря, я бы даже сказал невозможное поведение.

Последний раз редактировалось vovk; 05.11.2011 в 23:30.
vovk вне форума Ответить с цитированием
Старый 05.11.2011, 23:49   #3
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

Цитата:
Сообщение от vovk Посмотреть сообщение
Можно всё что позволяет ваша СУБД. Ваша Субд позволяет сравнивать без преобразования целочисленое значение со строкой? сомневаюсь... В вашей СУБД присутствует функция replace как вы её представляете? Возможно вам изучить документацию к вашей СУБД.

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

Использую FireBird 2.5.1.26351, и я не пытаюсь сравнить целочисленное значение со строкой, мне нужно чтобы в тексте внешнего запроса, в выражении "in" участвовала не строка заключенная в апострофы (например '123, 3454'), а просто было
Код:
... in (123, 3454)
, а не
Код:
... in ('123, 3454')
. Напомню поле "ID_ADDITION_WORDS" имеет тип "string", и у меня в этом поле как раз содержится значение '123, 3454'.
KBO вне форума Ответить с цитированием
Старый 06.11.2011, 00:01   #4
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Так как вы хотите это врядли возможно использовать, разве что в хранимых процедурах используя EXECUTE STATEMENT.
Но честно я все эти грабли уже собрал, не стоит. Не экономте количество записей сохраняйте если уж так надо эти айдишки в отдельной таблице как завешают нам реляционный СУБД. Чес слово всё станет гораздо проще.

А на счёт
Цитата:
и я не пытаюсь сравнить целочисленное значение со строкой,
вы именно это и пытались делать

Последний раз редактировалось vovk; 06.11.2011 в 00:04.
vovk вне форума Ответить с цитированием
Старый 06.11.2011, 00:12   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
select EW1 
 from MAIN_TABLE 
  where ID in (
    select cast(ID_ADDITION_WORDS as int)
    from MAIN_TABLE 
    where ID = 1390
   )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.11.2011, 00:14   #6
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
select EW1 
 from MAIN_TABLE 
  where ID in (
    select cast(ID_ADDITION_WORDS as int)
    from MAIN_TABLE 
    where ID = 1390
   )
преобразование)) но там же в каждой записи не 1 значение, а список значений ака
Цитата:
Напомню поле "ID_ADDITION_WORDS" имеет тип "string", и у меня в этом поле как раз содержится значение '123, 3454'.
))
vovk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в запросе Leo08 БД в Delphi 4 30.06.2011 13:43
Типы в запросе MSD БД в Delphi 4 03.06.2010 10:45
Like в запросе АлёнаP Microsoft Office Access 14 13.04.2009 21:35
замена в post-запросе schnaps Работа с сетью в Delphi 1 17.03.2009 21:48
Замена кода программы с Delhi5 на Delhi7 либо замена базы данных с Acessa на MySQL DorianLeroy Фриланс 8 18.02.2009 18:52