$valueSqls Each compared value as SQL, as in equals(). Never empty: * `IN ()` is a syntax error, and the caller knows what an empty list means. * @return string A boolean SQL expression safe to AND into a WHERE clause. */ public static function isOneOf(string $column, array $valueSqls): string { if ($valueSqls === array()) { throw new InvalidArgumentException('StoredValueMatch::isOneOf needs at least one value.'); } return self::bytes($column) . ' IN (' . implode(', ', array_map(array(self::class, 'bytes'), $valueSqls)) . ')'; } /** * The expression as bytes in the common charset. * * @param string $sql A column, expression or value literal. * @return string */ private static function bytes(string $sql): string { return 'BINARY CONVERT(' . $sql . ' USING ' . self::COMMON_CHARSET . ')'; } }