我有一个变量“filtro_x”
在 Erlang 中,变量以大写字母开头,并且它们周围没有引号。
对于第一部分,我设法通过以下说明成功:
您的解决方案甚至不适用于您在问题中提出的字符串:
39> String = "1,2,3".
"1,2,3"
40> Numbers = [begin {Int,_}=string:to_integer(Token), Int end|| Token<-string:tokens(String," ")].
[1]
试试这个:
53> String1 = "1,2,3".
"1,2,3"
54> Numbers = [ element(1, string:to_integer(Substr)) || Substr <- string:tokens(String1, ", ")].
[1,2,3]
59> String2 = "1,20, 130,4, 67".
"1,20, 130,4, 67"
60> Numbers = [ element(1, string:to_integer(Substr)) || Substr <- string:tokens(String2, ", ")].
[1,20,130,4,67]
我可以像下面这样在查询中直接使用这个新变量吗?选择
field1, field2, field3 FROM tab_name WHERE field1 = ANY($1);
那不是 Erlang。如果您要问是否可以将变量插入字符串,当然可以。使用~s 控制序列:
88> String = "SELECT field1, field2, field3 FROM tab_name WHERE field1 = ANY(~s)".
"SELECT field1, field2, field3 FROM tab_name WHERE field1 = ANY(~s)"
89> Insert = "1,2,3".
"1,2,3"
90> Query = lists:flatten(io_lib:format(String, [Insert]) ).
"SELECT field1, field2, field3 FROM tab_name WHERE field1 = ANY(1,2,3)"
或者:
92> String1 = "1,2,3".
"1,2,3"
93> Query = lists:flatten([
93> "SELECT field1, field2, field3 FROM tab_name WHERE field1 = ANY(",
93> String1,
93> $)
93> ]).
"SELECT field1, field2, field3 FROM tab_name WHERE field1 = ANY(1,2,3)"