powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как выяснить пустое ли поле?
16 сообщений из 16, страница 1 из 1
Как выяснить пустое ли поле?
    #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
Как выяснить пустое ли поле?
    #32492272
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы думаем, что хорошо бы ознакомиться с документацией на тему сравнения CHAR'ов и влияния пробелов на результат...
...
Рейтинг: 0 / 0
Как выяснить пустое ли поле?
    #32492276
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
WHERE (EMAIL IS NOT NULL) OR (EMAIL <> '') 

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


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

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

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


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

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

Best regards,
Dnico.
...
Рейтинг: 0 / 0
Как выяснить пустое ли поле?
    #32492387
Paul A. Kuptsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Dnico:
Хорошо бы еще проверить что в e-mail содержиться "@" и "." после "@". А то что он есть, что нет. Лучше на корректность проверять при вводе.
...
Рейтинг: 0 / 0
Как выяснить пустое ли поле?
    #32492404
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если адресат сидит в том же самом домене, что и отправитель, то хрюкву - @ (и домен) необязательно указывать
...
Рейтинг: 0 / 0
Как выяснить пустое ли поле?
    #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
Как выяснить пустое ли поле?
    #32492554
Paul A. Kuptsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При беглом просмотре обнаружил:
минимально для сервера. "a.com"
правильно было бы сказать "a.ru".
...
Рейтинг: 0 / 0
Как выяснить пустое ли поле?
    #32492636
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Paul A. Kuptsov - ну это же не мой код, в инете попался!

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


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