GVKun编程网logo

分层SQL问题(sql数据库分组)

8

如果您想了解分层SQL问题的相关知识,那么本文是一篇不可错过的文章,我们将对sql数据库分组进行全面详尽的解释,并且为您提供关于#MySQL问题--字符集问题、#MySQL问题:版本问题、Jfinal

如果您想了解分层SQL问题的相关知识,那么本文是一篇不可错过的文章,我们将对sql数据库分组进行全面详尽的解释,并且为您提供关于#MySQL问题--字符集问题、#MySQL问题:版本问题、Jfinal查经纬度问题(或SQL问题)、Linq To SQL问题 – 不支持对SQL的翻译(C#属性的问题)的有价值的信息。

本文目录一览:

分层SQL问题(sql数据库分组)

分层SQL问题(sql数据库分组)

我有一个实体的基本树结构.树最多可以有5个节点深,但可以是N个节点宽.我已经在表格中映射了这种关系,类似于下面显示的内容:
myID | myDescription | myParentID

我开始使用一个已知对象,它可以转换为具有起始“myID”.现在我想获得所有子节点.有没有办法在一个语句中获取所有子节点?这需要包括我孩子的孩子,然后沿着树下去.我正在使用Oracle sql.

谢谢,
松鸦

解决方法

SELECT  *
FROM    mytable
START WITH
        myid = :id
CONNECT BY
        myparentid = PRIOR myid

#MySQL问题--字符集问题

#MySQL问题--字符集问题

 

问题描述:执行SQl语句

SQL:select * from searchdicts  where word = ''㒰桂平'';
异常:java.sql.SQLException: Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation ''=''

原因:字符集问题,两表编码方式不一致。

查看字符集:
mysql> show variables like ''char%'';
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | gbk                              |
| character_set_connection | gbk                              |
| character_set_database   | gbk                              |
| character_set_filesystem | binary                           |
| character_set_results    | gbk                              |
| character_set_server     | latin1                           |
| character_set_system     | utf8                             |
| character_sets_dir       | /Data/apps/mysql/share/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.01 sec)

解决:查询SQL过程中进行字符转换

设置字符集;set names ''gbk'';

select * from searchdicts  where word = ''㒰桂平'' collate utf8mb4_general_ci;

模式:
select * from table_a a left join table_b b on CONVERT(a.field_a USING utf8) COLLATE utf8_unicode_ci = b.field_b

备注:utf8mb4_general_ci字符集是包含gbk_chinese_ci,属于范围更广的字符集。

select * from searchdicts  where word = ''仝桂平'';
select * from searchdicts  where word = ''㒰桂平'';

影响:查询时间会受损。

select * from searchdicts  where word = ''孟卫平'';
耗时:0.006s

select * from searchdicts  where word = ''孟卫平'' collate utf8mb4_general_ci;
耗时:0.886s

 

 

#MySQL问题:版本问题

#MySQL问题:版本问题

 

Wed Sep 09 16:15:47 CST 2020 WARN: Establishing SSL connection without server''s identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn''t set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to ''false''. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

解决方法:在连接mysql的url中加上useSSL=false

jdbc:mysql://127.0.0.1:3306/database?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false

Jfinal查经纬度问题(或SQL问题)

Jfinal查经纬度问题(或SQL问题)

我需要通过select * from hb_wrymap where lon=116.419868 and lat=39.911835查询一条数据,lon经度,lat纬度。

在数据库中查询得出一条记录

然后我使用

String lon = getPara("lon");
String lat = getPara("lat");
WrymapModel model = WrymapModel.dao.findFirst("select * from hb_wrymap where lon=?and lat=?", lon, lat);

一直是null,Db.findFirst,Db.find也都是null。

但是换一个经纬度的值也就没有问题。

最后使用

WrymapModel model = WrymapModel.dao.findFirst("select * from hb_wrymap where lon="+lon+" and lat="+lat);

这才解决问题。


我想知道为什么仅仅lon=116.419868 and lat=39.911835这个值差不出来,换个lon,lat值就查的出来。

求大神解答。

Linq To SQL问题 – 不支持对SQL的翻译(C#属性的问题)

Linq To SQL问题 – 不支持对SQL的翻译(C#属性的问题)

我将一些 Linq扩展到sql类.我有两个类似的语句,第一个工作,第二个不(“没有支持的sql翻译”错误).
var reg2 = rs.ProductRegistrations().SingleOrDefault(p => p.Product.product_name == "ACE")

var reg5 = rs.ProductRegistrations().SingleOrDefault(p => p.product_name == "ACE");

阅读此链接LINQ: No Translation to SQL后

我理解(我认为),基本上所有内容都需要“内联”,否则不能正确计算表达式树.第一个例子直接访问LinqTosql EntitySet“产品”(保持一切内联),而第二个示例使用一个定义如下的属性:

public partial class ProductRegistration :IProduct
{
    public string product_name
    {
        get { return this.Product.product_name; }
    }
}

我假设我的问题是LinqTosql无法翻译.

我将如何将“财产”变成等效的声明?我知道我需要使用System.Linq.Expressions.Expression,但我所尝试的一切都不起作用(有些甚至不编译).也许我应该做一个扩展方法(使用表达式),然后从属性中调用?一个属性可以调用扩展方法吗?

以下事情不起作用:

public static System.Linq.Expressions.Expression<Func<IProduct,bool>> ProductName2 (string pname)
{
    return (p => p.product_name == pname);
}

底线,我知道我需要将我的访问方法包含在“表达式< ....>”中但是我不知道如何从属性中访问它,以便上面的“reg5”变量可以正常工作.

如果有一些魔法属性,我可以添加到属性“auto-expression”属性并使LinqTosql快乐,而不是将其包装在Expression< ...>

很想能够做到这一点

public partial class ProductRegistration :IProduct
{
    [Auto-Expression]
    public string product_name
    {
        get { return this.Product.product_name; }
    }
}

编辑
下面的链接和答案的作品.太好了,谢谢.我的问题的第二部分,我有两个类似的语句,第二个不(“没有支持的sql翻译”错误).

var reg = rs.ProductRegistrations().ProductName("ACE").WithTranslations().SingleOrDefault();

var reg2 = rs.ProductRegistrations2().ProductName("ACE").WithTranslations().SingleOrDefault();

它们之间的区别在于第一个返回一个具体类“IQueryable [ProductRegistration]”的IQueryable,而第二个返回IQueryable的接口“IQueryable [IProduct]”.我想使用第二个,因为我可以拍摄许多不同的类的界面,它是更通用的方式,但它似乎不起作用.有任何想法吗?

解决方法

Would be great if there was some magic attribute that I Could just add to the property to “auto-expression” the property and make LinqTosql happy,instead of wrapping it in Expression<…>

有,非常近.你还是要做一些工作,但是damien Guard和朋友为你做了很大的努力:Client-side properties and any remote LINQ provider

很酷的是,它可以与任何支持您使用的表达式的LINQ提供程序配合使用.

更新:您的第二个版本(使用界面)的问题是,可查询提供程序需要能够弄清楚接口的实现者是什么,因为它需要将其转换为表名称.但是,接口的全部要点是接口用户对于实现类型应该是不可知的,因此提供者将在与接口的交叉目的上工作.所以我不认为第二种形式会奏效.

今天关于分层SQL问题sql数据库分组的讲解已经结束,谢谢您的阅读,如果想了解更多关于#MySQL问题--字符集问题、#MySQL问题:版本问题、Jfinal查经纬度问题(或SQL问题)、Linq To SQL问题 – 不支持对SQL的翻译(C#属性的问题)的相关知识,请在本站搜索。

本文标签: