【问题标题】:how to get value from a field in table如何从表中的字段中获取值
【发布时间】:2015-01-09 15:07:10
【问题描述】:

我在表格中有一个名为“参数”的字段,格式如下

utf8: "\xE2\x9C\x93"
id: "805265"
plan: initial
acc: "123456"
last: "1234"
doc: "1281468479"
validation: field
commit: Accept

如何从表中查询'acc'值?

数据库:sequelPro

【问题讨论】:

  • 这只是一个文本区域吗?
  • 当您保存到参数时,您应该保存为 json。然后你可以搜索一个json对象
  • 是的,它只是上面格式的文本区域
  • 你能把它保存为一个json对象吗?

标签: mysql ruby-on-rails ruby postgresql


【解决方案1】:
> str = 'utf8..... your string here...'
> puts str
utf8: "\xE2\x9C\x93"
id: "805265"
plan: initial
acc: "123456"
last: "1234"
doc: "1281468479"
validation: field
commit: Accept
=> nil
> str.match(/^acc: "(\d+)"/).captures.first
=> "123456"

【讨论】:

    【解决方案2】:

    如果我理解正确,在PostgreSQL 使用split_part

    看这个例子

    create table star (param text);
    insert into star values ('utf8: "\xE2\x9C\x93"'),
                            ('id: "805265"'),
                            ('plan: initial'),
                            ('acc: "123456"'),
                            ('last: "1234"'),
                            ('doc: "1281468479"'),
                            ('validation: field'),
                            ('commit: Accept');
    

    并在 SELECT 查询中使用函数 split_part 来获取 acc: 的值,如下所示

    select col2 
    from (
          select split_part(param, ' ', 1) col1,
                 split_part(param, ' ', 2) col2 
          from star
         ) t where col1='acc:'
    

    注意:如果你想用: 分割你的字段,那么使用select split_part(param, ':', 1) 和split_part(param, ':', 2) col2 所以WHERE 子句应该是where col1='acc'

    sqlfiddle-demo

    【讨论】:

    • @jack 我为示例创建了表格 无需在您的情况下创建表格 :D(您已经拥有包含数据的表格,但请考虑我的情况我没有像你这样的任何表格或数据,所以我需要创建一个来测试吗?),只需像我在回答中描述的那样查询
    • @jack select col2 from ( select split_part(_YOUR_COLUMN/FIELD_, ':', 1) col1, split_part(_YOUR_COLUMN/FIELD_, ':', 2) col2 from _YOUR_TABLE_NAME_ )t where col1='acc'
    • 我的数据库不支持 split_part
    • @jack 你的数据库和版本是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    相关资源
    最近更新 更多