请协助以下操作。我正在尝试运行一个接受一个参数$1
的脚本。该参数可以是字符串、字符或整数。我希望在where子句中使用该参数来搜索数据库中的元素。
这是要从中搜索的表:enter image description here
当我使用多个条件和OR时,它只在参数是数字或文本时才起作用。
ELEMENT=$($PSQL "SELECT * FROM elements e FULL JOIN properties p USING(atomic_number) WHERE symbol = '$1' OR name = '$1' OR atomic_number = $1;")
'
这是我用不同的参数enter image description here运行时得到的结果
请帮帮我。
先谢谢你
2条答案
按热度按时间eaf3rand1#
这在任何非数值参数上总是失败。
您正在传入
H
表示氢,但获取传入的任何内容并在atomic_number比较中将其用作无引号的数字,DB引擎正在尝试确定如何处理该数字。H
不是数字,也不是带引号的字符串,因此它必须是列的名称...但它不是,因此您使用了无效语法。我现在没有邮政编码,但是试试这个-
另外,顺便说一句......避免使用全大写的变量名。
按照惯例,这些变量应该是系统变量。
请不要嵌入图片除非是为了帮助澄清。
如果可以避免的话,不要依赖他们提供信息。复制/粘贴实际的格式化文本,人们可以在自己的测试中复制/粘贴。
xoefb8l82#
构造查询的另一种方法是:需要bash