|
|
|
Oskom Forums Добро пожаловать на Oskom Forums.
|
-
вопрос про SQL
возможноли сделать запрос чтоб сравнивать кусок значения поля , а не все поле ?
например, есть такое поле
слово1 :: слово2 :: цифры1
надо вычленить из поля цифры1 и сравнть их с другими цифрами (произвести вычетание и узнать больше ли определенного числа или нет)
-
Re: вопрос про SQL
Сообщение от Trogfor
больше ли определенного числа или нет)
То есть типа TrogforLol123?
А что за сервер?
если ты не знаешь какой длины 123 - то навскидку - никак.
В SQL 92 - никак.
А вообще можно написать функцию на TSQL или даже UDF.
Долго ли умеючи.
-
поле именно
вася :: пупки :: 123
хз че за система , майсикель 4 вроде
-
Если я правильно понял вопрос, то попробуй так
SELECT * FROM base WHERE pole LIKE "%ВАСЯ :: ПЕТЯ :: 123%"
-
Сообщение от Glacius
Если я правильно понял вопрос, то попробуй так
SELECT * FROM base WHERE pole LIKE "%ВАСЯ :: ПЕТЯ :: 123%"
и че мне это дает? мне надо вот это 123 вытащить из поля и сравнить его с другим числом !
-
Зелёный ЛОСЬ
Сделать таблицу, куда скриптом забить эти три значения по отдельности и плюнуть в ботинок тому кретину, который придумал такое хранение. После чего хошь сравнивай, хошь чего еще делай.
-
Сообщение от Bonik
тому кретину, который придумал такое хранение
Бе-бе-бе а в нормальных СУБД можно массивы хранить )))
-
Зелёный ЛОСЬ
Сообщение от MoR
Бе-бе-бе а в нормальных СУБД можно массивы хранить )))
Вообще, они для этого и придуманы. Все СУБД. Включая нормальные, обычные, глупые и даже совсем идиотские.
-
кто не понял %)))
я делаю пост на форуме с темой
Вася Пупкин :: В кремле :: 12.13.2006
вот !! и мне надо будет выбрать из таблицы тем токо те темы где дата не старее недели
-
В программе выбираешь?
Если да, то какие проблемы?
Только SQL средствами, может и можно, я сходу не скажу как. Мне в таких масштабах его знать не надо.
Ну а если в программе данными оперировать, то выбрал всю строку, программой уже отрезал число и дальше вторым запросом сравнил это число с какой-то там датой.
-
надо именно сикелем запросить
-
Сообщение от Bonik
Вообще, они для этого и придуманы. Все СУБД. Включая нормальные, обычные, глупые и даже совсем идиотские.
Я про array fields... типа
Код:
create table test
(
MyArrayField INTEGER [12]
)
Хотя не факт что это аффтару поможет %))
А какие это - совсем идиотские? ))) первасив? ))
-
Сообщение от Trogfor
Вася Пупкин :: В кремле :: 12.13.2006
Стоп А вот это - " :: " какие символы? Это ты для наглядности или не?
Мля реально идиотизм строкой писать три поля *))
Архитектору базы двойка... он бы еще в БЛОБ все ето писал ))
-
Зелёный ЛОСЬ
Сообщение от MoR
А какие это - совсем идиотские? ))) первасив? ))
Excel
Меня очень порадовал перловый модуль, который позволяет выбирать данные из екселя sql-запросами.
-
Сообщение от Bonik
Excel
Меня очень порадовал перловый модуль, который позволяет выбирать данные из екселя sql-запросами.
Так есть же ODBC драйвер для екселя *)
-
MoR, а ещё в Excel ожно писать макросы. Только при чём тут макросы? Наверное, при том же, при чём и ODBC.
-
Сообщение от Const
MoR, а ещё в Excel ожно писать макросы
Нихрена не понял.
Я не знаю как он работает, я знаю что он есть.
Взял, настроил, и работаешь с екселем как с любым другим источником данных.
Может и на перле это можно легко сделать, я уж не знаю *))
-
Во кстати как это можно сделать в MS SQL:
Select CAST( SUBSTRING ( AMixedField, PATINDEX('%[0-9]%', AMixedField), LEN(AMixedField) - PATINDEX('%[0-9]%', AMixedField)) AS DATETIME) From MyTable
Есть ли в MySQL что то типа
...PATINDEX('%[а-я]%', MyStringField)
...PATINDEX('%[0-9]%', MyStringField)
я не знаю.
-
Учитывая, что недавно ты спрашивал про апач и сейчас говоришь про форум, то ты все это дело мутишь под ПХП. Я прально понял?
Если так, то запрос выглядит приблизительно вот-так вот:
function now()
{
функция должна возвращать текущую дату в том формате, в котором тебе вернет дату MySQL на какой-нить запрос из нужного поля. Пишется самостоятельно.
{
$res = mysql_query("SELECT * FROM таблица_тем WHERE (UNIX_TIMESTAMP(". now() .") - UNIX_TIMESTAMP(имя_поля_даты)) < семь_дней");
Где семь_дней вычисляй сам. В зависимости от того как ты будешь сравнивать даты. Толи дни, толи секунды сравнивай. Лучше секунды. Переводишь дату в секунды и сравниваешь.
И вообще: ----------------- ЦИТАТА ФАКА ----------------
3.3.4.5. Вычисление дат
В MySQL имеется несколько функций, реализующих арифметические операции над датами. Эти функции позволяют, например, вычислять возраст или получать части даты.
Определить возраст любого из животных в базе можно, если вычислить разницу между текущим годом и годом его рождения, а из результата вычесть единицу, если текущий день находится к началу календаря ближе, нежели день рождения животного. Приведенный ниже запрос выводит дату рождения каждого животного, его возраст и текущую дату.
mysql> SELECT name, birth, CURRENT_DATE,
-> (YEAR(CURRENT_DATE)-YEAR(birth))
-> - (RIGHT(CURRENT_DATE,5)<RIGHT(birth,5))
-> AS age
-> FROM pet;
+----------+------------+--------------+------+
| name | birth | CURRENT_DATE | age |
+----------+------------+--------------+------+
| Fluffy | 1993-02-04 | 2001-08-29 | 8 |
| Claws | 1994-03-17 | 2001-08-29 | 7 |
| Buffy | 1989-05-13 | 2001-08-29 | 12 |
| Fang | 1990-08-27 | 2001-08-29 | 11 |
| Bowser | 1989-08-31 | 2001-08-29 | 11 |
| Chirpy | 1998-09-11 | 2001-08-29 | 2 |
| Whistler | 1997-12-09 | 2001-08-29 | 3 |
| Slim | 1996-04-29 | 2001-08-29 | 5 |
| Puffball | 1999-03-30 | 2001-08-29 | 2 |
+----------+------------+--------------+------+
В этом примере функция YEAR() выделяет из даты год, а RIGHT() - пять крайних справа символов, представляющих календарный день (MM-DD). Часть выражения, сравнивающая даты, выдает 1 или 0, что позволяет уменьшить результат на единицу, если текущий день (CURRENT_DATE) находится к началу календаря ближе, нежели день рождения животного. Все выражение смотрится несколько неуклюже, поэтому вместо него в заголовке соответствующего столбца результатов выводится псевдоним (age - "возраст").
Запрос неплохо работает, но разобраться в результатах было бы проще, если бы строки располагались в определенном порядке. Этого можно достичь, добавив в запрос выражение ORDER BY name и отсортировав таким образом результаты по имени:
mysql> SELECT name, birth, CURRENT_DATE,
-> (YEAR(CURRENT_DATE)-YEAR(birth))
-> - (RIGHT(CURRENT_DATE,5)<RIGHT(birth,5))
-> AS age
-> FROM pet ORDER BY name;
+----------+------------+--------------+------+
| name | birth | CURRENT_DATE | age |
+----------+------------+--------------+------+
| Bowser | 1989-08-31 | 2001-08-29 | 11 |
| Buffy | 1989-05-13 | 2001-08-29 | 12 |
| Chirpy | 1998-09-11 | 2001-08-29 | 2 |
| Claws | 1994-03-17 | 2001-08-29 | 7 |
| Fang | 1990-08-27 | 2001-08-29 | 11 |
| Fluffy | 1993-02-04 | 2001-08-29 | 8 |
| Puffball | 1999-03-30 | 2001-08-29 | 2 |
| Slim | 1996-04-29 | 2001-08-29 | 5 |
| Whistler | 1997-12-09 | 2001-08-29 | 3 |
+----------+------------+--------------+------+
---------------------------- ЦИТАТА ФАКА ----------------
PS. В очередной раз повторяю. Если ты постишь такие вопросы, то указывай версию ОС, программы, и т.д. И нам тебя легче понять будет и тебе быстрее дадут ответы.
PPS. http://dev.mysql.com/doc/
-
Зелёный ЛОСЬ
Сообщение от Vzard
В очередной раз повторяю. Если ты постишь такие вопросы, то указывай версию ОС, программы, и т.д.
Ну, мож человек не знает, что кроме его любимого ... (mysql, ms sql, postgress, oracle, dbase, db2, interbase - выбрать нужное) есть еще туча всяких других СУБД, диалекты которых почти не пересекаются.
Ваши права
- Вы не можете создавать новые темы
- Вы не можете отвечать в темах
- Вы не можете прикреплять вложения
- Вы не можете редактировать свои сообщения
Правила форума
|