2017-04-05 104 views
0

我有一個問題的兩個部分:二郎:字符串列出

第一部分: 我有一個變量,「filtro_x」,即有一個字符串。 我想將該字符串(「1,2,3」)轉換爲列表([1,2,3]),所以我可以將它分配給一個新的變量。

第二部分: 我可以直接在查詢中使用這個新變量嗎? SELECT field1,field2,field3 FROM tab_name WHERE field1 = ANY($ 1);

任何人都可以請我說說如何去做?

謝謝 瑞

回答

1

對於第一部分,我設法用下面的指令成功:

[begin {Int,_}=string:to_integer(Token), Int end|| Token<-string:tokens(String," ")] 

現在,在第二部分的工作。

謝謝。

0

我有一個變量,「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] 

我可以直接在查詢中使用這個新變量,如下所示? SELECT 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)"