标签: firebird

在数据库表中存储货币符号

我们使用firebird作为我们的数据库.我们如何在数据库中存储货币符号.我们应该使用哪个字符集或通常最佳做法?

例如,存储"$"或"¥"直接显示,但更复杂的符号在数据库表中没有正确显示,即"₡"不会存储在数据库中.

什么被普遍认为是这种事情的"最佳实践".

编辑 -
让我指出我们使用的语言是C#.我怀疑UTF8会是答案,但我们如何将字符存储在数据库中,我们是使用Unicode,Hex还是Decimal等效的....还是我们只是使用字符?

unicode firebird currency

6
推荐指数
2
解决办法
8951
查看次数

如何暂时禁用Firebird 2.1中的表中的所有约束?

我想禁用所有外键约束并在之后重新启用它们,有没有办法做到这一点?

我知道SQLServer允许这样做,但是Firebird呢?

sql firebird constraints firebird2.1

6
推荐指数
1
解决办法
7113
查看次数

确定Firebird SQL版本的方法?

是否存在确定Firebird SQL版本的任何方法?使用SQL或代码(delphi,C++).

再见

c++ delphi firebird

6
推荐指数
1
解决办法
7033
查看次数

如何使用SQL MAX函数获取行的所有字段?

考虑这个表(来自http://www.tizag.com/mysqlTutorial/mysqlmax.php):

Id     name               type     price 
123451 Park's Great Hits  Music    19.99 
123452 Silly Puddy        Toy      3.99 
123453 Playstation        Toy      89.95 
123454 Men's T-Shirt      Clothing 32.50 
123455 Blouse             Clothing 34.97 
123456 Electronica 2002   Music    3.99 
123457 Country Tunes      Music    21.55 
123458 Watermelon         Food     8.73
Run Code Online (Sandbox Code Playgroud)

此SQL查询返回每种类型中最昂贵的项:SELECT类型,MAX(价格)FROM产品GROUP BY类型

Clothing $34.97
Food     $8.73
Music    $21.55
Toy      $89.95
Run Code Online (Sandbox Code Playgroud)

我还希望为每一行获取属于上述最高价格的字段ID名称.什么SQL查询将返回这样的表?

Id     name            type      price
123455 Blouse          Clothing  34.97
123458 Watermelon      Food      8.73
123457 Country Tunes   Music     21.55
123453 Playstation     Toy …
Run Code Online (Sandbox Code Playgroud)

sql firebird max firebird2.1 greatest-n-per-group

6
推荐指数
2
解决办法
3104
查看次数

获取表定义的Firebird SQL语句

我正在使用ibpp库编写自己的Firebird数据库浏览器.有没有办法可以使用SQL语句获取表定义?

sql firebird

6
推荐指数
1
解决办法
9889
查看次数

是否可以在Firebird中重命名表?

是否可以在Firebird中重命名表,或者我应该创建一个新表,然后使用insert移动数据?

sql firebird

6
推荐指数
2
解决办法
8553
查看次数

实体框架在不同的工作站上生成不同的查询

我们在单个开发者机器和一些客户端上遇到问题.单Linq查询生成两个不同的SQL查询.问题实际上是第二个查询具有firebird不支持的"OUTER APPLY"语句.我们认为这不是代码问题,而是环境问题,但我会粘贴代码.

linq:

AIds = (from x in context.RISK_T_ASSESS_HIST
    where (x.ID_RISKOBJECT.HasValue && x.F_CREATEDON >= Freq.StartDate && x.F_CREATEDON <= Freq.EndDate)
    group x by x.ID_RISKOBJECT into gr
    let lastCreated = gr.Max(p => p.F_CREATEDON)
    select new
    {
        ObjId = gr.Key
        ,
        LastStatus = gr.Where(p => p.F_CREATEDON == lastCreated && p.ID_RISKOBJECT == gr.Key).Select(p => p.F_STATUS).FirstOrDefault()
    }).Where(x => x.LastStatus == 0 || x.LastStatus == 1).Select(x => x.ObjId.Value).ToArray();
Run Code Online (Sandbox Code Playgroud)

使用OUTER APPLY的SQL

SELECT 
"G"."ID_RISKOBJECT" AS "ID_RISKOBJECT"
FROM   (SELECT 
    "C"."A1" AS "C1", 
    "C"."K1" AS "ID_RISKOBJECT"
    FROM ( SELECT 
        "E"."ID_RISKOBJECT" …
Run Code Online (Sandbox Code Playgroud)

c# linq firebird entity-framework

6
推荐指数
1
解决办法
778
查看次数

插入UTF8数据库时格式错误的字符串

我使用Delphi 2010,Firebird 2.5.2,IBExpress组件.

数据库字符集是UTF8.在db-connection UTF8中.

数据库:

var 
  Database: TIBDatabase;
begin
  ...
  Database.params.Clear;
  Database.params.Add('user ''SYSDBA'' password ''masterkey'' ');
  Database.params.Add('page_size 16384');
  Database.params.Add('default character set UTF8');
Run Code Online (Sandbox Code Playgroud)

表:

CREATE TABLE NEW_TABLE (
    NEW_FIELD  VARCHAR(255)
);
Run Code Online (Sandbox Code Playgroud)

连接代码:

  Database.params.Clear;
  Database.params.Add('user_name=SYSDBA');
  Database.params.Add('password=masterke');
  Database.params.Add('sql_role_name=UTF8');
  Database.Open;
Run Code Online (Sandbox Code Playgroud)

插入代码:

var
  IBSQL: TIBSQL;
begin
  IBSQL := TIBSQL.Create(nil);
  try
    IBSQL.Database := db;
    IBSQL.Transaction := tr

    IBSQL.SQL.Text := 'insert into NEW_TABLE (NEW_FIELD) values (:param)';

    IBSQL.params[0].Value := 'Ãabc©'; // unsupported symbols :(

    if not IBSQL.Transaction.Active then
      IBSQL.Transaction.StartTransaction;

    IBSQL.ExecQuery; // "Malformed string" exception here

    if IBSQL.Transaction.Active …
Run Code Online (Sandbox Code Playgroud)

delphi firebird utf-8 delphi-2010 firebird2.5

6
推荐指数
1
解决办法
4076
查看次数

Firebird如何选择匹配集合中所有项目的ID

我正在使用Firebird 2.1.

这里有张桌子: IDs, Labels

同一ID可以有多个标签:

10 Peach
10 Pear
10 Apple
11 Apple
12 Pear
13 Peach
13 Apple
Run Code Online (Sandbox Code Playgroud)

假设我有一组标签,即:( Apple,Pear,Peach).

如何编写单个选择以返回在给定集合中包含所有标签的所有ID?我最好在用逗号分隔的字符串中指定集合,例如:('Apple','Pear','Peach') - >这应该返回ID = 10.

谢谢!

sql firebird firebird2.1

6
推荐指数
1
解决办法
584
查看次数

列出Firebird数据库的所有未使用的域

是否有一种快速方法可以列出为数据库定义的所有Firebird域,这些域实际上并未被任何字段使用?我有一个包含许多表和许多域的大型数据库,似乎很多都不再使用了,所以我想是时候进行清理了!

我认为这可以通过查询RDB$...系统表来实现,但我不确定如何做到这一点.

firebird

6
推荐指数
1
解决办法
570
查看次数