首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从数组中去掉方括号?

从数组中去掉方括号?
EN

Stack Overflow用户
提问于 2014-01-09 21:56:05
回答 2查看 8K关注 0票数 2

我有一个数组,我试图加载到一个SQL语句中。当我编译SQL语句并包含数组时,它还将[]括号放入字符串中,我需要删除它们,以便将它们插入到我的DB中。

这是我的密码:

代码语言:javascript
复制
i = 0

while i < rows.length
     sql = "INSERT INTO my_table VALUES(#{rows[i]})"
     puts sql
end

当前产出:

代码语言:javascript
复制
INSERT INTO my_table VALUES(["value 1", "value 2", "value 3"])

期望产出:

代码语言:javascript
复制
INSERT INTO my_table VALUES("value 1", "value 2", "value 3")
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-09 21:58:27

使用inspectjoin

代码语言:javascript
复制
sql = "INSERT INTO my_table VALUES(#{rows[i].map{|x| x.inspect}.join(', ')})"
  • map对数组的每个元素调用一个块,然后将该元素设置为块的返回值。
  • inspect将字符串转换为它的表示形式(如"the string" (其周围有引号))
  • join将它们与中间的一个分隔符放在一起。
票数 8
EN

Stack Overflow用户

发布于 2014-01-10 01:27:46

你现在看到的是:

代码语言:javascript
复制
ary = ['value 1', 'value 2', 'value 3']
"#{ ary }" # => "[\"value 1\", \"value 2\", \"value 3\"]"

这是由使用S AKA Array.inspect引起的“检查”输出。看着它就像我们通常看到的那样:

代码语言:javascript
复制
puts "#{ ary }"
# >> ["value 1", "value 2", "value 3"]

下面是如何解决这个问题:

代码语言:javascript
复制
sql = "INSERT INTO my_table VALUES(#{ ary.map{ |i| '"%s"' % i }.join(', ') })" 
# => "INSERT INTO my_table VALUES(\"value 1\", \"value 2\", \"value 3\")"

puts sql
# >> INSERT INTO my_table VALUES("value 1", "value 2", "value 3")

'"%s"' % i是一个用双引号包装字符串的format

总之,现在与数据库通信的正确方法是使用一个像样的ORM。Ruby中有几个,其中我更喜欢续集。ORM的主要优势在于它消除了代码与数据库使用的语言的密切依赖。阅读它支持的数据库清单,而不需要更改您的代码中需要连接的DSN之外的任何内容。

Sequel目前为ADO、Amalgalite、CUBRID、DataObjects、DB2、DBI、Firebird、IBM_DB、Informix、JDBC、MySQL、Mysql2、ODBC、OpenBase、Oracle、PostgreSQL、SQLAnywhere、SQLite3、Swift和TinyTDS提供了适配器。

注意,TinyTDS是列出的。

迁移工作,查询工作,插入,删除,更新,一切都是抽象的,这是一个巨大的胜利,因为你迁移到更大的/其他系统。您可以从本地的SQLite开始,使用MySQL或PostgreSQL,然后切换到Oracle而不需要更改代码,只需调整DSN即可。

自述一起阅读网站的第一页,您将了解它的使用有多容易,并想知道为什么您会以其他方式这样做。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21032044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档