小编ser*_*rna的帖子

Google App Engine数据存储编码?

我正在将GAE数据存储区用于Java应用程序,并存储一些将使用多种语言的文本.在我的servlet中,我首先检查数据存储中是否有任何数据,如果没有,我正在创建一些数据,类似于以下内容:

ArrayList<Lang> list = new ArrayList<Lang>();
list.add(new Lang("EN", "English", 1));
list.add(new Lang("ES", "Español", 0));
//more languages here...

PersistenceManager pm = PMF.get().getPersistenceManager();
for(Lang l : list) {
  pm.makePersistent(l);
}
Run Code Online (Sandbox Code Playgroud)

由于这是使用JDO,我想我也应该包括Lang该类的相关部分:

@PersistenceCapable
public class Lang {
 @PrimaryKey
 private String code;
 @Persistent
 private String name;
 @Persistent
 private int popularity;
// getters & setters & constructors...
}
Run Code Online (Sandbox Code Playgroud)

但是,非ASCII字符让我感到悲伤.我已经将我的Eclipse项目设置为使用UTF-8编码而不是默认的Cp1252,所以我认为从这个角度来看我没问题,但是当我使用App Engine数据查看器查看我的数据时,该Español条目变为Español,当我点击它查看它时,我得到500服务器错误.(还有一些其他条目,从右到左的文本根本不会出现在数据查看器中,但一次只出现一个问题......)

我可以在代码中设置字符编码,或指定GAE我存储的数据是UTF-8吗?或者是Eclipse方面的问题,我的Java代码应该做些什么?

java google-app-engine character-encoding google-cloud-datastore

5
推荐指数
1
解决办法
2713
查看次数

Oracle SQL查询使用GROUP BY汇总统计信息

我有一个Oracle表,其数据如下所示:

ID   BATCH   STATUS
1    1       0
2    1       0
3    1       1
4    2       0
Run Code Online (Sandbox Code Playgroud)

也就是说,ID是主键,每个"批处理"将有多行,每行在STATUS列中都有一个状态代码.还有很多其他专栏,但这些是重要的专栏.

我需要编写一个查询来汇总每个批次状态代码 ; 在STATUS列中有三个可能的值,0,1和2,我希望输出看起来像这样:

BATCH  STATUS0  STATUS1  STATUS2
1      2        1        0
2      1        0        0
Run Code Online (Sandbox Code Playgroud)

这些数字将是重要的; 对于批次1,有

  • STATUS设置为0的2条记录
  • 1记录STATUS设置为1,和
  • 没有STATUS设置为0的记录.

对于批次2,有

  • 1记录STATUS设置为0,和
  • 没有STATUS设置为1或2的记录.

有没有办法在一个查询中执行此操作,而无需为每个状态代码重写查询?即我可以轻松编写这样的查询,并运行三次:

SELECT batch, COUNT(status)
FROM table
WHERE status = 0
GROUP BY batch
Run Code Online (Sandbox Code Playgroud)

我可以运行它,然后再次运行status = 1,再次运行status = 2,但我希望在一个查询中执行它.

如果它有所不同,除了STATUS列之外还有另一列我可能想要以相同的方式进行汇总 - …

sql oracle pivot group-by

2
推荐指数
1
解决办法
7448
查看次数