I have encountered a statement like this:
$z=\{x \in X | \forall y \in Y : d_{xy} = NULL\}$
It's supposedly getting as set of $z$ out of table $d$ where in column $x$, row $y$ is empty. But the symbol $|$ used, isn't it supposed to be $\land$? Or "such that" is a legitimate way of expression in this case? Then what's the difference between $|$ and $:$, aren't they both "such that"?
The symbol $:$ often means "such that" in general. You can encounter it anywhere outside of set builder notation. But in the specific case of set builder notation; i.e. when you have $$S=\{x:p(x)\}$$ it is also accepted convention to instead write $$ S = \{x\mid p(x)\}.$$ You won't, however, see something like $\forall\epsilon>0\exists\delta>0\mid\dots$ anytime soon. $\mid$ and $:$ are interchangeable within set builder notation, and everywhere else, the convention of using $:$ is adopted.
Do note, however, that $:$ can be used in a more versatile way than this. We often see things like $\{ x^2:x\in\mathbb Z\}$, which English grammar wouldn't permit a reading like "$x^2$ such that $x$ is in $\mathbb Z$". Instead, a better way of thinking about this would be "$x^2$ for each $x$ in $\mathbb Z$". Also, we can have functions denoted $f:A\to B$ which should be interpreted as "$f$ is a function mapping $A$ into $B$"; and you'll often see $f:x\mapsto y$, which can be interpreted as "$f$ is a function that takes the element $x$ to the element $y$". In each of these cases, it wouldn't make grammatical sense to force the term "such that", but I suppose you can if you want to. In general then, $:$ meaning "such that" is a good rule of thumb, but you should definitely consider the context when deciding the meaning.