【问题标题】:Erlang: string to listErlang:要列出的字符串
【发布时间】:2017-08-31 00:55:12
【问题描述】:

我有一个两部分的问题:

第一部分: 我有一个变量“filtro_x”,它有一个字符串。 我想将该字符串 ("1, 2, 3") 转换为列表 ([1, 2, 3]),以便将其分配给新变量。

第二部分: 我可以直接在查询中使用这个新变量吗,如下所示? SELECT field1, field2, field3 FROM tab_name WHERE field1 = ANY($1);

谁能告诉我如何去做?

谢谢你, 瑞

【问题讨论】:

    标签: string list erlang


    【解决方案1】:

    对于第一部分,我设法通过以下说明成功:

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

    现在,开始第二部分。

    谢谢。

    【讨论】:

      【解决方案2】:

      我有一个变量“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)"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-08
        • 1970-01-01
        • 1970-01-01
        • 2011-02-24
        • 2021-09-04
        • 1970-01-01
        • 2018-09-29
        • 2011-12-23
        相关资源
        最近更新 更多