在mysql中选择带有ascii代码的所有列

时间:2014-05-22 16:35:16

标签: mysql

我有一个我最近发现的代码:)它确实完成了它的工作并且做得很好我可能会添加。但是,我想检查所有列而不是按列检查。是否可能

检查下面的代码:

SELECT column_name
FROM table_name
WHERE column_name REGEXP '[[.DLE.]-[.US.]]'

现在,我想要的是这样的,但它不会起作用

SELECT *
FROM table_name
WHERE REGEXP '[[.DLE.]-[.US.]]'

请提出建议,并为提出许多问题而道歉:)

1 个答案:

答案 0 :(得分:2)

REGEXP是一个二元运算符,这意味着你必须有一个左操作数和一个右操作数。
像大多数算术运算符。

您可以检查所有列:

SELECT *
FROM table_name
WHERE CONCAT(a, b, c, d, ...) REGEXP '[[.DLE.]-[.US.]]'

我为了示例而使用...,但您需要明确地命名所有列。没有选项可以为表达式中的列使用通配符。


您无法设置"所有列"在单个SET子句中。您需要执行以下操作:

UPDATE table_name SET
  a = REPLACE(a,char(16),''),
  b = REPLACE(b,char(16),''),
  c = REPLACE(c,char(16),''),
  d = REPLACE(d,char(16),''),
  ...similar for other columns;

如果您认为这是SQL语言中的意外遗漏,那么我想知道您是否可以命名任何其他编程语言,让您可以比较或分配一个值来解决所有变量"用一个表达式?