Oskom Forums

Oskom Forums


Добро пожаловать на Oskom Forums.
 
 
Сейчас на шардах UO Oskom
 
+ Ответить в теме
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 20 из 24
  1. Master
    [Banned]
    Регистрация
    18.01.2004
    Сообщений
    1,466
    #1

    По умолчанию вопрос про SQL

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

    например, есть такое поле

    слово1 :: слово2 :: цифры1

    надо вычленить из поля цифры1 и сравнть их с другими цифрами (произвести вычетание и узнать больше ли определенного числа или нет)

  2. Grandmaster

    Регистрация
    24.08.2002
    Адрес
    У вас 1 друг.
    Сообщений
    6,098
    #2

    По умолчанию Re: вопрос про SQL

    Цитата Сообщение от Trogfor
    больше ли определенного числа или нет)
    То есть типа TrogforLol123?
    А что за сервер?
    если ты не знаешь какой длины 123 - то навскидку - никак.
    В SQL 92 - никак.
    А вообще можно написать функцию на TSQL или даже UDF.
    Долго ли умеючи.

  3. Master
    [Banned]
    Регистрация
    18.01.2004
    Сообщений
    1,466
    #3

    По умолчанию

    поле именно

    вася :: пупки :: 123

    хз че за система , майсикель 4 вроде

  4. Developer
    [Banned]
    Регистрация
    14.11.2004
    Адрес
    та самая :-)
    Сообщений
    593
    #4

    По умолчанию

    Если я правильно понял вопрос, то попробуй так
    SELECT * FROM base WHERE pole LIKE "%ВАСЯ :: ПЕТЯ :: 123%"

  5. Master
    [Banned]
    Регистрация
    18.01.2004
    Сообщений
    1,466
    #5

    По умолчанию

    Цитата Сообщение от Glacius
    Если я правильно понял вопрос, то попробуй так
    SELECT * FROM base WHERE pole LIKE "%ВАСЯ :: ПЕТЯ :: 123%"
    и че мне это дает? мне надо вот это 123 вытащить из поля и сравнить его с другим числом !

  6. Зелёный ЛОСЬ
    Аватар для Bonik
    Регистрация
    20.03.2001
    Адрес
    узурпаторы и диктаторы
    Сообщений
    16,143
    #6

    По умолчанию

    Сделать таблицу, куда скриптом забить эти три значения по отдельности и плюнуть в ботинок тому кретину, который придумал такое хранение. После чего хошь сравнивай, хошь чего еще делай.

  7. Grandmaster

    Регистрация
    24.08.2002
    Адрес
    У вас 1 друг.
    Сообщений
    6,098
    #7

    По умолчанию

    Цитата Сообщение от Bonik
    тому кретину, который придумал такое хранение
    Бе-бе-бе а в нормальных СУБД можно массивы хранить )))

  8. Зелёный ЛОСЬ
    Аватар для Bonik
    Регистрация
    20.03.2001
    Адрес
    узурпаторы и диктаторы
    Сообщений
    16,143
    #8

    По умолчанию

    Цитата Сообщение от MoR
    Бе-бе-бе а в нормальных СУБД можно массивы хранить )))
    Вообще, они для этого и придуманы. Все СУБД. Включая нормальные, обычные, глупые и даже совсем идиотские.

  9. Master
    [Banned]
    Регистрация
    18.01.2004
    Сообщений
    1,466
    #9

    По умолчанию

    кто не понял %)))

    я делаю пост на форуме с темой

    Вася Пупкин :: В кремле :: 12.13.2006

    вот !! и мне надо будет выбрать из таблицы тем токо те темы где дата не старее недели

  10. Созидая, не разрушай

    Регистрация
    04.09.2002
    Сообщений
    8,149
    #10

    По умолчанию

    В программе выбираешь?
    Если да, то какие проблемы?

    Только SQL средствами, может и можно, я сходу не скажу как. Мне в таких масштабах его знать не надо.
    Ну а если в программе данными оперировать, то выбрал всю строку, программой уже отрезал число и дальше вторым запросом сравнил это число с какой-то там датой.

  11. Master
    [Banned]
    Регистрация
    18.01.2004
    Сообщений
    1,466
    #11

    По умолчанию

    надо именно сикелем запросить

  12. Grandmaster

    Регистрация
    24.08.2002
    Адрес
    У вас 1 друг.
    Сообщений
    6,098
    #12

    По умолчанию

    Цитата Сообщение от Bonik
    Вообще, они для этого и придуманы. Все СУБД. Включая нормальные, обычные, глупые и даже совсем идиотские.
    Я про array fields... типа
    Код:
    create table test
    (
    MyArrayField INTEGER [12]
    )
    Хотя не факт что это аффтару поможет %))
    А какие это - совсем идиотские? ))) первасив? ))

  13. Grandmaster

    Регистрация
    24.08.2002
    Адрес
    У вас 1 друг.
    Сообщений
    6,098
    #13

    По умолчанию

    Цитата Сообщение от Trogfor
    Вася Пупкин :: В кремле :: 12.13.2006
    Стоп А вот это - " :: " какие символы? Это ты для наглядности или не?
    Мля реально идиотизм строкой писать три поля *))
    Архитектору базы двойка... он бы еще в БЛОБ все ето писал ))

  14. Зелёный ЛОСЬ
    Аватар для Bonik
    Регистрация
    20.03.2001
    Адрес
    узурпаторы и диктаторы
    Сообщений
    16,143
    #14

    По умолчанию

    Цитата Сообщение от MoR
    А какие это - совсем идиотские? ))) первасив? ))
    Excel
    Меня очень порадовал перловый модуль, который позволяет выбирать данные из екселя sql-запросами.

  15. Grandmaster

    Регистрация
    24.08.2002
    Адрес
    У вас 1 друг.
    Сообщений
    6,098
    #15

    По умолчанию

    Цитата Сообщение от Bonik
    Excel
    Меня очень порадовал перловый модуль, который позволяет выбирать данные из екселя sql-запросами.
    Так есть же ODBC драйвер для екселя *)

  16. Созидая, не разрушай

    Регистрация
    04.09.2002
    Сообщений
    8,149
    #16

    По умолчанию

    MoR, а ещё в Excel ожно писать макросы. Только при чём тут макросы? Наверное, при том же, при чём и ODBC.

  17. Grandmaster

    Регистрация
    24.08.2002
    Адрес
    У вас 1 друг.
    Сообщений
    6,098
    #17

    По умолчанию

    Цитата Сообщение от Const
    MoR, а ещё в Excel ожно писать макросы
    Нихрена не понял.
    Я не знаю как он работает, я знаю что он есть.
    Взял, настроил, и работаешь с екселем как с любым другим источником данных.
    Может и на перле это можно легко сделать, я уж не знаю *))

  18. Grandmaster

    Регистрация
    24.08.2002
    Адрес
    У вас 1 друг.
    Сообщений
    6,098
    #18

    По умолчанию

    Во кстати как это можно сделать в 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)
    я не знаю.

  19. Grandmaster

    Регистрация
    11.10.2004
    Адрес
    Dominatio Violentia
    Сообщений
    1,799
    #19

    По умолчанию

    Учитывая, что недавно ты спрашивал про апач и сейчас говоришь про форум, то ты все это дело мутишь под ПХП. Я прально понял?
    Если так, то запрос выглядит приблизительно вот-так вот:

    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/

  20. Зелёный ЛОСЬ
    Аватар для Bonik
    Регистрация
    20.03.2001
    Адрес
    узурпаторы и диктаторы
    Сообщений
    16,143
    #20

    По умолчанию

    Цитата Сообщение от Vzard
    В очередной раз повторяю. Если ты постишь такие вопросы, то указывай версию ОС, программы, и т.д.
    Ну, мож человек не знает, что кроме его любимого ... (mysql, ms sql, postgress, oracle, dbase, db2, interbase - выбрать нужное) есть еще туча всяких других СУБД, диалекты которых почти не пересекаются.

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения