Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как выяснить пустое ли поле? / 16 сообщений из 16, страница 1 из 1
22.04.2004, 16:18
    #32492247
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выяснить пустое ли поле?
Вообщем ситуация такая:
Есть поле, в ктором содержится E-Mail.
Пока юзеры не заполнили базу, то все хорошо (EMAIL = NULL).

Соответственно выбираем все E-Mail :
WHERE EMAIL IS NOT NULL .
Но вот когда юзеры начинают долбить, то EMAIL может быть забито пробелами или пустым значением :
WHERE (EMAIL IS NOT NULL ) OR (EMAIL <> '') - Не катит.

Может конечно тригер поставить и насильно лупить NULL ?

Вообщем кто что по этому думает?

Best regards,
Dnico.
...
Рейтинг: 0 / 0
22.04.2004, 16:22
    #32492272
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выяснить пустое ли поле?
Мы думаем, что хорошо бы ознакомиться с документацией на тему сравнения CHAR'ов и влияния пробелов на результат...
...
Рейтинг: 0 / 0
22.04.2004, 16:23
    #32492276
FreemanZAV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выяснить пустое ли поле?
Код: plaintext
WHERE (EMAIL IS NOT NULL) OR (EMAIL <> '') 

Можно заменить на:
Код: plaintext
WHERE (Trim(EMAIL) <> '') 
...
Рейтинг: 0 / 0
22.04.2004, 16:23
    #32492280
FreemanZAV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выяснить пустое ли поле?
Trim можно взять в rFunc например.
...
Рейтинг: 0 / 0
22.04.2004, 16:25
    #32492289
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выяснить пустое ли поле?
А нафига?
...
Рейтинг: 0 / 0
22.04.2004, 16:28
    #32492308
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выяснить пустое ли поле?
Пишу и получаю все пустые строки + c Е-Mail.
Код: plaintext
WHERE (EMAIL IS NOT NULL) OR (RTRIM(LTRIM(EMAIL)) <> '')


Best regards,
Dnico
...
Рейтинг: 0 / 0
22.04.2004, 16:30
    #32492318
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выяснить пустое ли поле?
А OR на AND менять не пробовал?
...
Рейтинг: 0 / 0
22.04.2004, 16:30
    #32492323
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выяснить пустое ли поле?
Забыл добавить Хи-Хи.
Добавляю
...
Рейтинг: 0 / 0
22.04.2004, 16:33
    #32492336
FreemanZAV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выяснить пустое ли поле?
Код: plaintext
WHERE (EMAIL IS NOT NULL) OR (RTRIM(LTRIM(EMAIL)) <> '')

Блин, пишу же
Код: plaintext
WHERE (Trim(EMAIL) <> '') 

При вызове Trim NULL преобразуются в пустые строки.
...
Рейтинг: 0 / 0
22.04.2004, 16:34
    #32492339
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выяснить пустое ли поле?
Блин ... голова чугунная ...


Best regards,
Dnico.
...
Рейтинг: 0 / 0
22.04.2004, 16:37
    #32492355
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выяснить пустое ли поле?
FreemanZAV , Спасибо, но я просто не хочу пользовать rFunc или еще что-то. А RTRIM и LTRIM есть в составе FB.

Все работает. Я просто в задумчивости OR заместо AND влепил ...

Best regards,
Dnico.
...
Рейтинг: 0 / 0
22.04.2004, 16:43
    #32492387
Paul A. Kuptsov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выяснить пустое ли поле?
2Dnico:
Хорошо бы еще проверить что в e-mail содержиться "@" и "." после "@". А то что он есть, что нет. Лучше на корректность проверять при вводе.
...
Рейтинг: 0 / 0
22.04.2004, 16:45
    #32492404
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выяснить пустое ли поле?
Если адресат сидит в том же самом домене, что и отправитель, то хрюкву - @ (и домен) необязательно указывать
...
Рейтинг: 0 / 0
22.04.2004, 16:48
    #32492416
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выяснить пустое ли поле?
Ну тут я накопал небольшой код :

.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
function IsValidEmail(const Value: string): boolean; 
  function CheckAllowed(const s: string): boolean; 
  var 
    i: integer; 
  begin 
    Result:= false; 
    for i:=  1  to Length(s) do 
    begin 
      { недопустимый символ в s - значит недопустимый адрес } 
      if not (s[i] in ['a'..'z', 'A'..'Z', '0'..'9', '_', '-', '.']) then 
        Exit; 
    end; 
    Result:= true; 
  end; 
var 
  i: integer; 
  namePart, serverPart: string; 
begin // начало выполнения IsValidEmail 
  Result:= false; 
  i:= Pos('@', Value); 
  if i =  0  then 
    Exit; 
  namePart:= Copy(Value,  1 , i -  1 ); 
  serverPart:= Copy(Value, i +  1 , Length(Value)); 
  // @ не указано имя         имя или сервер не указаны; минимально для сервера.  "a.com"  
  if (Length(namePart) =  0 ) or ((Length(serverPart) <  5 )) then 
    Exit; 
  i:= Pos('.', serverPart); 
  // должно иметь точку и как минимум три знака от конца 
  if (i =  0 ) or (i > (Length(serverPart) -  2 )) then 
    Exit; 
  Result:= CheckAllowed(namePart) and CheckAllowed(serverPart); 
end;


Best regards,
Dnico
...
Рейтинг: 0 / 0
22.04.2004, 17:29
    #32492554
Paul A. Kuptsov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выяснить пустое ли поле?
При беглом просмотре обнаружил:
минимально для сервера. "a.com"
правильно было бы сказать "a.ru".
...
Рейтинг: 0 / 0
22.04.2004, 17:50
    #32492636
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выяснить пустое ли поле?
Paul A. Kuptsov - ну это же не мой код, в инете попался!

Best regards,
Dnico.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как выяснить пустое ли поле? / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]