GVKun编程网logo

通过正负查询过滤空字符串时,MsSql 的行为不同

2

此处将为大家介绍关于通过正负查询过滤空字符串时,MsSql的行为不同的详细内容,此外,我们还将为您介绍关于c#–为什么null条件运算符对==和.Equals()的行为不同?、H2DB支持的RESTA

此处将为大家介绍关于通过正负查询过滤空字符串时,MsSql 的行为不同的详细内容,此外,我们还将为您介绍关于c# – 为什么null条件运算符对==和.Equals()的行为不同?、H2 DB 支持的 REST API 与 IBM DB2 的行为不同,用于插入带有 XML 字符串的行、ibatis 自动生成键 selectkey(Oracle、MYSQL、MSSQL、SQLITE)、javascript – 为什么jQuery中的click()方法与DOM click方法()的行为不同?的有用信息。

本文目录一览:

通过正负查询过滤空字符串时,MsSql 的行为不同

通过正负查询过滤空字符串时,MsSql 的行为不同

如何解决通过正负查询过滤空字符串时,MsSql 的行为不同

当过滤空字符串 != ''''<> '''' 关于 NULL 值时,我刚刚意识到我的 Mssql 数据库的非常奇怪的行为。

我在表中有以下数据

ID 价值 (表X)
1 (空字符串)
2 NULL (无值)
3 文字 (一些真实的文字)

此查询 select * from X where Value = '''' 结果:

  • ID:[1]

查询 select * from X where Value != ''''select * from X where Value <> '''' 的结果是:

  • ID:[3]

我不明白的是,为什么第二个查询没有返回 ID=2?

我知道显式检查空值 where Value IS NULL 的语法,所以我预计第二个查询的行为会有所不同。在检查非空值时,我曾经写过 where Value <> '''' AND Value IS NOT NULL。从现在开始我完全糊涂了...

解决方法

NULL 没有字符串值 - 或根本没有任何值,而 '' '' 是空字符串。您在第二个查询中寻找非空字符串。 NULL 不是空字符串或根本不是字符串。 NULL 是除 NULL 本身之外没有其他类型的“值”

无法使用比较运算符测试 NULL 值, 例如 =、。 https://www.w3schools.com/sql/sql_null_values.asp

c# – 为什么null条件运算符对==和.Equals()的行为不同?

c# – 为什么null条件运算符对==和.Equals()的行为不同?

我有以下代码,工作正常:

var firstChild = token.First as JProperty;
bool isHref = token.Children().Count() == 1
           && firstChild?.Name == "href";

我想使字符串比较不区分大小写,所以我将其更改为:

var firstChild = token.First as JProperty;

bool isHref = token.Children().Count() == 1
           && firstChild?.Name.Equals("href",StringComparison.OrdinalIgnoreCase);

现在编译器给了我一个错误:

Operator && cannot be applied to operands of type ‘bool’ and ‘bool?’

我可以通过合并到false来修复错误

bool isHref = token.Children().Count() == 1
         && (firstChild?.Name.Equals("href",StringComparison.OrdinalIgnoreCase) ?? false);

但我很好奇为什么编译器不喜欢第一个空条件语法.

解决方法

让我们简化一下要领.

string x = null,y = null;

// this is null.  b1 is bool?
var b1 = x?.Equals(y); 

// b2 is bool
// this is true,since the operator doesn't require non-null operands
var b2 = x == y;

基本上.Equals()需要一个非null对象来操作.这与==不同,后者是静态绑定的,不是动态调度的.

H2 DB 支持的 REST API 与 IBM DB2 的行为不同,用于插入带有 XML 字符串的行

H2 DB 支持的 REST API 与 IBM DB2 的行为不同,用于插入带有 XML 字符串的行

如何解决H2 DB 支持的 REST API 与 IBM DB2 的行为不同,用于插入带有 XML 字符串的行

我有点不知所措:我有一个包含一个 CLOB 列的表,该列应该包含一个 XML 字符串。在我的测试套件中,我使用内存数据库 H2。在生产中,我使用 IBM DB2。我的测试在某些时候一直失败,我注意到原因是当我在测试套件的表中添加一行时,XML 字符串包含一个标题 (<?xml ...>)。在我的生产数据库中没有这样的标题。

我在生产和测试套件中所做的调用是相同的:我进行了 REST 调用以插入一些具有相同 JSON 输入的行(映射到一个 DTO,该 DTO 使用 JAXB 转换为 XML)。

通过一些粗略的在线阅读,我无法弄清楚这是什么原因。 IBM DB2 是否在后台处理 XML 字符串,我一定错过了什么?

ibatis 自动生成键 selectkey(Oracle、MYSQL、MSSQL、SQLITE)

ibatis 自动生成键 selectkey(Oracle、MYSQL、MSSQL、SQLITE)

        我们在数据库插入一条数据的时候,经常是需要返回插入这条数据的主键。但是数据库供应商之间生成主键的方式都不一样。有些是预先生成 (pre-generate) 主键的,如 Oracle 和 PostgreSQL;有些是事后生成 (post-generate) 主键的,如 MySQL 和 SQL Server。但不管是哪种方式,我们都可以用 ibatis 的节点来获取语句所产生的主键。


oracle 例子:

<insert id="insertProduct-ORACLE" parameterClass="product">  

    <selectKey resultClass="int" type="pre" keyProperty="id" >  

        SELECT STOCKIDSEQUENCE.NEXTVAL AS VALUE FROM DUAL  

    </selectKey>  

    insert into PRODUCT (PRD_ID,PRD_DESCRIPTION) values (#id#,#description#)  

</insert>

sql-server 例子:

<insert id="insertProduct-MS-SQL" parameterClass="product">  

    insert into PRODUCT (PRD_DESCRIPTIONvalues (#description#)  

    <selectKey resultClass="int" type="post" keyProperty="id" >  

        select @@IDENTITY as value  

    </selectKey>  

</insert>

mysql 例子:

<insert id="insertProduct-MYSQL" parameterClass="product">  

    insert into PRODUCT (PRD_DESCRIPTIONvalues (#description#)  

    <selectKey resultClass="int" type="post" keyProperty="id" >  

        select LAST_INSERT_ID(as value  

    </selectKey>  

</insert>

SQLite 例子:

<insert id="Create" parameterClass="Subject">
      INSERT INTO SUBJECT
      (SubjectName,QuestionCount,IsNowPaper)
      VALUES(#SubjectName#,#QuestionCount#,#IsNowPaper#)
      <selectKey resultClass="int" type="post" property="SubjectId">
        SELECT seq
        FROM sqlite_sequence
        WHERE (name = ''SUBJECT'')
      </selectKey>
    </insert>
注意:name = ''SUBJECT''中SUBJECT为表名称

 

javascript – 为什么jQuery中的click()方法与DOM click方法()的行为不同?

javascript – 为什么jQuery中的click()方法与DOM click方法()的行为不同?

我已经厌倦了在子元素上模拟click事件以触发其click事件,并且其父元素上也有一个click事件.
起初,我相信我可以通过以下两种方式做到这一点:

document.getElementById('child').click();

或者在jquery

$('#child').click();

但是,我后来发现这两种方法的表现不同.

dom的方法按预期触发click事件,但jquery的方法触发父元素的click事件两次.

这是一个关于小提琴的例子. https://jsfiddle.net/5t5jc7ey/

任何人都可以解释为什么jquery为父元素的click事件触发两次?

解决方法

我可以得出结论,第一次点击父节点是由于事件冒泡而第二次父节点触发了自己的默认点击事件,因此它再次点击.所以我通过使用e.preventDefault()避免了默认行为;

working demo

看到代码更清晰的想法:

$('#jquery').click(function() {
  $('#child').click(function(e){e.preventDefault();}).click();
});

$('#dom').click(function() {
  document.getElementById('child').click();
});

I will try to explain again:

1.The first click event of parent gets triggers due to event bubbling.

  1. Second click event of parent is due to browser’s default action which you can see by clicking on the div itself. I am preventing
    browser default action by using e.preventDefault();

在输出中,您在我的小提琴中看到的父点击事件是由于事件冒泡.所以它给出了所需的答案

今天关于通过正负查询过滤空字符串时,MsSql 的行为不同的讲解已经结束,谢谢您的阅读,如果想了解更多关于c# – 为什么null条件运算符对==和.Equals()的行为不同?、H2 DB 支持的 REST API 与 IBM DB2 的行为不同,用于插入带有 XML 字符串的行、ibatis 自动生成键 selectkey(Oracle、MYSQL、MSSQL、SQLITE)、javascript – 为什么jQuery中的click()方法与DOM click方法()的行为不同?的相关知识,请在本站搜索。

本文标签: