count(*)
количества АННУЛИРУЮТ, и count(column)
не делает
[редактирование], добавил этот код так, чтобы люди могли выполнить его
create table #bla(id int,id2 int)
insert #bla values(null,null)
insert #bla values(1,null)
insert #bla values(null,1)
insert #bla values(1,null)
insert #bla values(null,1)
insert #bla values(1,null)
insert #bla values(null,null)
select count(*),count(id),count(id2)
from #bla
результаты 7 3 2
Re: Мои функции bactracking.
Это общие функции, которые обеспечивают основу для обработки обратного отслеживания и логических переменных, подобных пролог движок. Вы должны предоставить функцию (предикаты), описывающую логику программы. Если вы напишете их, как в прологе, я могу показать вам, как перевести их на Erlang. Очень кратко вы переводите что-то вроде:
p :- q, r, s.
в прологе во что-то вроде
p(Next0) ->
Next1 = fun () -> s(Next0) end,
Next2 = fun () -> r(Next1) end,
q(Next2).
Здесь я игнорирую все другие аргументы, кроме продолжений.
Надеюсь, это поможет. Как я уже сказал, если вы опишете свои алгоритмы, я могу помочь вам их перевести, Я искал хороший пример. Вы, конечно, можете сделать это и сами, но это немного поможет.
Прочтите эти статьи в блоге Роберта Вирдинга:
http://rvirding.blogspot.com/2009/03/backtracking-in-erlang-part-1-control.html http://rvirding.blogspot.com/2009/04/backtracking-in-erlang-part-2-passing.html