RFpro.ru: Базы данных MySQL

  Все выпуски  

RFpro.ru: Базы данных MySQL


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

solowey
Статус: Профессор
Рейтинг: 0
∙ повысить рейтинг »
Alexander Babich
Статус: Профессор
Рейтинг: 0
∙ повысить рейтинг »
SAW
Статус: Студент
Рейтинг: 0
∙ повысить рейтинг »

∙ Базы данных

Номер выпуска:553
Дата выхода:27.03.2021, 17:45
Администратор рассылки:Коцюрбенко Алексей Владимирович (Старший модератор)
Подписчиков / экспертов:4 / 16
Вопросов / ответов:3 / 11

Консультация # 82383: Добрый день уважаемые эксперты. Подскажите в чем проблема Пишу запрос select * from Raschet where cod="test-test" или select * from Raschet where (cod="123-123") Выдается ошибка Overflow occurred during data type conversion. conversion error from string "test-test". Поле COD им...
Консультация # 28567: Я ввожу запрос insert into user values (0,\'$name\',\'$city\',\'$email\',\'$url\',\'$msg\',\'-\', now(),0); а $msg - сообщение на русском языке, и тотом вывожу, то место сообщения я вижу ???????? (знаки вопроса), а английские буквы отображаются нормально. Помогите, как быть?...
Консультация # 60162: Добрый день. Можно ли как-то проверить есть ли в базе данных таблица с определённым именем? Нужно создать таблицу в БД, но только в том случае, если такой таблицы ещё нет....

Консультация # 82383:


Добрый день уважаемые эксперты.

Подскажите в чем проблема

Пишу запрос select * from Raschet where cod="test-test" или select * from Raschet where (cod="123-123")

Выдается ошибка Overflow occurred during data type conversion. conversion error from string "test-test".

Поле COD имеет тип VarChar

Заранее благодарен Алексеев. А.В.

Дата отправки: 13.04.2007, 13:28
Вопрос задал: Алексеев Александр Владимирови
Всего ответов: 4
Страница онлайн-консультации »


Консультирует Андрей Тимофеев:

Здравствуйте, Алексеев Александр Владимирович!
Попробуйте так:

Приложение:

Консультировал: Андрей Тимофеев
Дата отправки: 13.04.2007, 13:44
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует PaVeL_Ekt:

Здравствуйте, Алексеев Александр Владимирович!

Попробуй так
select * from Raschet where cod like (\'test-test\')
Должно пойти.

Консультировал: PaVeL_Ekt
Дата отправки: 13.04.2007, 13:44
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Игорь Елизаров:

Здравствуйте, Алексеев Александр Владимирович!
Это происходит из-за знака минус, который встречается в тексте запроса.
Запрос его интерпретирует как математический знак и пытается выполнить соответствующую операцию

попробуйте сделать следующее
вариант 1
условие отбора занесите в переменную

%var1 = "test-test"

сам запрос from Raschet where cod= %var1
другой вариант - использовать вместо минуса в запросе замещающий символ
что-то вроде test?test (символы замены могут быть разные в разных версиях SQL)

Консультировал: Игорь Елизаров
Дата отправки: 13.04.2007, 14:49
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Чинга:

Здравствуйте, Алексеев Александр Владимирович!
Во первых вам надо для начало в запрос ввоодить только строковые или же цифровые данные. Лучше сравнивать с перменной приведя ее к типа потем settyoe($var, \'integer\');
settype($var, \'string\'); У вас е сравнение мускуль понимает,к ак арифметическое действие. если принципиально именно так, то через LIKE (\'%test-test%\')

Консультировал: Чинга
Дата отправки: 13.04.2007, 23:26
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 28567:

Я ввожу запрос insert into user values (0,\'$name\',\'$city\',\'$email\',\'$url\',\'$msg\',\'-\', now(),0);

а $msg - сообщение на русском языке, и тотом вывожу, то место сообщения я вижу ???????? (знаки вопроса), а английские буквы отображаются нормально. Помогите, как быть?

Дата отправки: 30.10.2005, 21:40
Вопрос задал: Liger Dennis
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Jadd:

Здравствуйте, Liger Dennis!
Проверьте нормально ли сохраняются данные. В таблице все ок? Тогда замените фонт отображения информации на тот, который поддерживает кирилицу.

Консультировал: Jadd
Дата отправки: 30.10.2005, 21:45
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 60162:

Добрый день.
Можно ли как-то проверить есть ли в базе данных таблица с определённым именем?
Нужно создать таблицу в БД, но только в том случае, если такой таблицы ещё нет.

Дата отправки: 25.10.2006, 19:39
Вопрос задал: Вiктор
Всего ответов: 6
Страница онлайн-консультации »


Консультирует Евгений Крюков:

Здравствуйте, Вiктор!
Подход зависит от базы данных. Например, для Oracle можно обратиться к справочнику таблиц USER_TABLES или обработать ошибку ORA-942. В MySQL попытка обращения к несуществующей таблице вызовет исключение 1146 - его также можно обработать и создать нужную таблицу.

Консультировал: Евгений Крюков
Дата отправки: 25.10.2006, 20:00
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Филатов Евгений Геннадьевич:

Здравствуйте, Вiктор!

В приложении пример из рабочей программы. Связь с базой через DAO. Вместо QueryDefs ( коллекция запросов ) нужно поставить TableDefs (коллекция таблиц ) и метод CreateQueryDef заменить на CreateTableDef с соответствующими параметрами.
Если нет вопросов по созданию таблицы, то все.

С уважением.

Приложение:

Консультировал: Филатов Евгений Геннадьевич
Дата отправки: 25.10.2006, 20:01
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Архангельский Андрей Германови:

Здравствуйте, Вiктор!

Все зависит от типа СУБД.
Как правило есть системные таблицы описывающие архитектуру БД, соответственно есть таблица, которая содержит перечень таблиц и их полей.
К этим таблицам можно сделать запрос.
В Firebird эта таблица называется rdb$relations, а в ней поле rdb$relations_name в котором имена таблиц

Консультировал: Архангельский Андрей Германови
Дата отправки: 25.10.2006, 20:35
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Grigory:

Здравствуйте, Вiктор!
Если вы имеете дело с SQL Server 2000, то это можно проверить с помощью вот такого запроса:
SELECT count(*)
FROM sysobjects
WHERE (name = \'имя вашей таблицы\')
Этот запрос вернет 1 если такая таблица уже в вашей БД есть, и 0 - если такой таблицы нет.
В Oracle это делается вот так:
входите в SQL Plus в качестве пользователя с правами доступа к этой таблице и вводите:
select count(*) from cat where table_name = \'имя вашей таблицы\';

Удачи!

Консультировал: Grigory
Дата отправки: 25.10.2006, 20:49
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Марк Крейн:

Здравствуйте, Вiктор!
Как всегда соригинальничаю. Хотя то что я сейчас скажу, несмотря на свою дикость, работает. Проверялось только на MySQL. Итак, код:

SELECT * from table where (1=0)

Если выполнится без проблем, значит таблица table существует, в противном случае её нет. Я сам когда прочитал об этом в интернете был поражён (как может 1 равняться нулю??). Но тем не менее факт остаётся фактом - всё прекрасно работает.

Консультировал: Марк Крейн
Дата отправки: 25.10.2006, 21:03
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует HookEst:

Здравствуйте, Вiктор!
Мне отвечать проще, я знаю вашу СУБД...
В MySQL 3.23 и выше, Вы можете использовать IF NOT EXISTS так, что если таблица с таким именем уже существует - ошибки не возникнет(структура имеющейся таблицы не проверяется и не обновляется!!!).
например:

CREATE TABLE IF NOT EXISTS `users` (`id` INT(11), `name` VARCHAR(32));
INSERT INTO `users` ...
чтобы быть увереным также и в структуре таблицы, можно сначала безопасно удалять таблицу, потом создавать:

DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (`id` INT(11), `name` VARCHAR(32));
INSERT INTO `users` ...

Успехов.

Консультировал: HookEst
Дата отправки: 26.10.2006, 05:36
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное