селект с проверкой года
селект с проверкой года
Доброго времени суток!
подскажите как составить select.
есть таблица, одна из колонок (например, yy1) varchar(4) должна содержать год.
но есть и другая информация. Как выбрать записи из таблицы , в которых yy1 содержит информацию, отличную от года.
Спасибо
подскажите как составить select.
есть таблица, одна из колонок (например, yy1) varchar(4) должна содержать год.
но есть и другая информация. Как выбрать записи из таблицы , в которых yy1 содержит информацию, отличную от года.
Спасибо
Re: селект с проверкой года
Так и определись, как различить.
Мы-то откуда догадаемся? "2000" - это год или вес машины в килограммах?
Мы-то откуда догадаемся? "2000" - это год или вес машины в килограммах?
Re: селект с проверкой года
Это я дальше в программе определяю.WildSery писал(а):Так и определись, как различить.
Мы-то откуда догадаемся? "2000" - это год или вес машины в килограммах?
А здесь нужно выбрать записи, у которых
4 цифры в yy1
Re: селект с проверкой года
Вот, уже половина задачи решена. Попутно наводящий вопрос - "0000" или "9999" - это тоже год?2hands писал(а):А здесь нужно выбрать записи, у которых 4 цифры в yy1
Re: селект с проверкой года
это я проверю программно. главное, чтобы выбирались записи, у которых в этом поле не цифры.WildSery писал(а):Вот, уже половина задачи решена. Попутно наводящий вопрос - "0000" или "9999" - это тоже год?2hands писал(а):А здесь нужно выбрать записи, у которых 4 цифры в yy1
Re: селект с проверкой года
udf типа isDigit.у которых в этом поле не цифры.
Re: селект с проверкой года
я то думал мне сейчас выложат
select * from ..... where ....
буду пробовать и читать
спасибо
select * from ..... where ....
буду пробовать и читать
спасибо
Re: селект с проверкой года
Никто думать не хочет. Все хотят готового
И хотя это подходит только для четырёх цифр, но ведь ты так и не озвучил, что за помойка в этом полу, и какие "года" там могут быть.
Код: Выделить всё
select * from T where yy1 not between '0000' and '9999'
Re: селект с проверкой года
все как всегда на стыке модулей разных пользователей.
в одном поле для даты, куда заносится ручками дата.
Но. в соответствии с установками системы, там может быть и "18-3-2001" и "03111999" и куча других вариантов.
А при добавлении в varchar(4) записываются последние символа. ПОэтому там могут быть и разделители (точка, пробел, слэш и пр.)
Поэтому нужно найти такие записи с "ошибками" .
вот и вся помойка.
в одном поле для даты, куда заносится ручками дата.
Но. в соответствии с установками системы, там может быть и "18-3-2001" и "03111999" и куча других вариантов.
А при добавлении в varchar(4) записываются последние символа. ПОэтому там могут быть и разделители (точка, пробел, слэш и пр.)
Поэтому нужно найти такие записи с "ошибками" .
вот и вся помойка.
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Re: селект с проверкой года
Код: Выделить всё
select * from T where yy1 containig '.' or yy1 containing '-' or yy1 containing ' ' or yy1 containing '/'
Re: селект с проверкой года
Код: Выделить всё
...or yy1 containing 'a' or yy1 containing 'b' or yy1 containing ...
Re: селект с проверкой года
в SQL проверки строки на "цифра-не цифра" нет, или по крайней мере в FB/IB нет. Поэтому самое простое решение - where isDigit(field) = 1. Дальше уже можно проверять, что это за цифра такая. Но с учетом того, что в этой varchar(4) может быть все что угодно, в том числе и 00, и 0, и 999, что я бы годом не считал, то на мой взгляд проще всего не морочить голову пытаясь навернуть SQL, а сделать все нужные проверки на клиенте. Считал запись, проверил, выдал результат. Все равно придется все записи перебирать.я то думал мне сейчас выложат
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Re: селект с проверкой года
И в каких же региональных настройках ты видел a или b в качестве разделителя?..WildSery писал(а):Код: Выделить всё
...or yy1 containing 'a' or yy1 containing 'b' or yy1 containing ...
Re: селект с проверкой года
При чём тут разделитель? Автор сказал "заносится ручками".Dimitry Sibiryakov писал(а):И в каких же региональных настройках ты видел a или b в качестве разделителя?..
Re: селект с проверкой года
Не проще ли валидировать данные на клиенде перед тем как что-то в базу писать?2hands писал(а): в одном поле для даты, куда заносится ручками дата.
Но. в соответствии с установками системы, там может быть и "18-3-2001" и "03111999" и куча других вариантов.
А при добавлении в varchar(4) записываются последние символа. ПОэтому там могут быть и разделители (точка, пробел, слэш и пр.)
Поэтому нужно найти такие записи с "ошибками" .
Тогда и помойки не будет.
Ну и для даты применять не varchar(20) а date?