Уже есть хорошие ответы. Вот простая попытка для развлечения:
function currencyFormat(no) {
var ar = (+no).toFixed(2).split('.');
return [
numberFormat(ar[0]|0),
'.',
ar[1]
].join('');
}
function numberFormat(no) {
var str = no + '';
var ar = [];
var i = str.length -1;
while( i >= 0 ) {
ar.push( (str[i-2]||'') + (str[i-1]|| '')+ (str[i]|| ''));
i= i-3;
}
return ar.reverse().join(',');
}
Выполнить несколько примеров
console.log(
currencyFormat(1),
currencyFormat(1200),
currencyFormat(123),
currencyFormat(9870000),
currencyFormat(12345),
currencyFormat(123456.232)
)
На самом деле вам больше ничего делать не нужно. Ограничение проверки считается выполненным, если выражение проверки имеет значение true или значение null.
Ваше ограничение CHECK (y> x) будет работать, как и в вашем сценарии, потому что строка foobar не нарушит ограничение, поскольку оно оценивается как null
Вы можете поместить тест IS NULL в выражение CHECK, например:
CREATE TABLE mytable (
name TEXT,
x INTEGER,
y INTEGER CHECK (y IS NULL OR y > x)
);
(проверено на PostgreSQL 8.4)