#!/bin/bash
Update() {
#Update table set_key set_value [set_key set_value […]] <	where_key where_operator where_value
#								[where_key where_operator where_value
#								[…]]
	local			\
		table="$1"	\
		key		\
		argument	\
		operator	\
		value		\
		set_statement	\
		where_keys	\
		where_values	\
		what		\
		where_statement	\
		results
	shift
	what=key
	for argument
	do
		case $what in
			key)
				set_statement="${set_statement:+${set_statement},}\`$argument\`"
				what=value
			;;
			value)
				case $argument in
					'::AtOM:FT::'*)
						argument="${argument//::AtOM:FT::/}"
						set_statement+=" = "'"'"${argument//\"/\"\"}"'"'
					;;
					'NULL')
						set_statement+=" = NULL"
					;;
					+([0-9])?(.+([0-9])))
						set_statement+=" = $argument"
					;;
					*)
						set_statement+=" = "'"'"${argument//\"/\"\"}"'"'
					;;
				esac
				what=key
			;;
		esac
	done
	while read key operator value
	do
		(( ${#where_statement} )) && where_statement+=( "AND" )
		case $value in
			'NULL')
				where_statement+=( "$key is NULL" )
			;;
			+([0-9.]))
				where_statement+=( "$key $operator $value" )
			;;
			*)
				where_statement+=( "$key $operator "'"'"${value//\"/\"\"}"'"' )
			;;
		esac
	done
	echo	"UPDATE '$table' SET"		\
			"$set_statement"	\
		"WHERE"				\
			"${where_statement[@]}"	\
		";" >&3
}
