我有一张桌子,经常以某种方式订购.该排序是我们可以称为排名的派生列的基础.如果我查询整个表,我可以让数据库为我计算排名:
CREATE TEMP SEQUENCE the_seq;
SELECT my_table.foo, my_table.bar, nextval('the_seq') AS rank
FROM my_table
ORDER BY my_table.bar DESC;
Run Code Online (Sandbox Code Playgroud)
这产生了有用的结果,如:
foo | bar | rank
-------------------
0005 | 2100 | 1
0003 | 1632 | 2
0002 | 1200 | 3
0001 | 899 | 4
0004 | 500 | 5
Run Code Online (Sandbox Code Playgroud)
通过该结果集,我可以确定任何foo的等级.然而,这需要我查询整个表并迭代结果集,即使我只想要foo'0001'的等级.
理想情况下,我会有一个为我排名列的视图,所以我可以任意说:
SELECT my_table_vw.foo, my_table_vw.bar, my_table_vw.rank
FROM my_table_vw
WHERE my_table_vw.foo = '0001'
Run Code Online (Sandbox Code Playgroud)
然后得到
foo | bar | rank
-------------------
0001 | 899 | 4
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何在数据库中构造它,因为视图不能在它们的定义中构造临时序列.我甚至想做什么?我觉得它必须是因为替代方案,保持插入或查询整个表的排名似乎很荒谬.
我有以下字符串
var str="ArtShare$u002ETotalArtShares"
Run Code Online (Sandbox Code Playgroud)
我想用它替换它"$u002E","."这样我的字符串就会变成“ArtShare.TotalArtShares”来实现这个我使用了替换功能
var str="ArtShare$u002ETotalArtShares"
var replace=str.replace(".","$u002E")
println("replaced string is "+replace)
Run Code Online (Sandbox Code Playgroud)
但它不工作以下打印在控制台上
replaced string is ArtShare$u002ETotalArtShares
Run Code Online (Sandbox Code Playgroud)
请指导我哪里做错了谢谢
更新用户的答案后nyavro我想这
var str="ArtShare$u002ETotalArtShares"
var replace=str.replace("$u002E", ".")
println("replaced string is "+replace)
Run Code Online (Sandbox Code Playgroud)
但输出保持不变,但为了测试我已经尝试过这个
var str1="ArtShare$u002ETotalArtShares"
var replace1=str1.replace("Total", ".")
println("replaced string is "+replace1)
Run Code Online (Sandbox Code Playgroud)
打印以下内容
replaced string is ArtShare$u002E.ArtShares
Run Code Online (Sandbox Code Playgroud)
这意味着当我用“.”替换 Total 时代码正在工作。但是当我给出这部分字符串时它不起作用$u002E请帮助我我不明白为什么会发生这种情况
更新 2 我试过这样做
var str2="ArtShare$u002ETotalArtShares"
var replace2=str2.replace("u002E", ".")
println("replaced string is "+replace2)
Run Code Online (Sandbox Code Playgroud)
打印以下内容
replaced string is ArtShare$.TotalArtShares
Run Code Online (Sandbox Code Playgroud)
在那之后,我猜是 $sign 导致了它没有替换的问题,请帮助我我该如何替换它