相关疑难解决方法(0)

在MATLAB中标记某些元素的最佳方法是什么?使用NaN还是Inf?或者是其他东西?

您可能知道,在许多情况下,需要标记矩阵的某些元素.例如,当我们有加权邻接矩阵,并且我们的图形没有完全连接时,我们必须标记一些元素以表明这些节点之间没有边缘.问题是如何做到这一点?将NaN或Inf放在矩阵中的元素上会更好吗?或其他东西(如-1)?

matlab

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

获取根父级

+--------+---------+-----------+
|   id   | title   | parent_id |
+--------+---------+-----------+
|    1   | Lvl-1   |   null    |
+--------+---------+-----------+
|    2   | Lvl-2   |   null    |
+--------+---------+-----------+
|    3   | Lvl-11  |     1     |
+--------+---------+-----------+
|    4   | Lvl-12  |     1     |
+--------+---------+-----------+
|    5   | Lvl-121 |     4     |
+--------+---------+-----------+
Run Code Online (Sandbox Code Playgroud)

我如何actualy获得root父的每一行
例如,行与id 5有父母一方id 4id 4有父母id 1,所以根身份证id 5id 1
我没有对如何做到这一点的任何想法,并在那里只用1来解决此问题的方法询问

mysql hierarchical

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

为什么 SQL 最终将 NULL 值视为 FALSE?

因为NULL它只是一个未知或缺失的值,所以也许它是TRUE但我们不知道。何为FALSE推定?除了“这是显而易见的”(因为事实并非如此)之外,它还有其他理由吗?或者应该被视为一种 SQL 不良设计工件?

例如:

SELECT * FROM `rainbow_table` WHERE `show_me`
Run Code Online (Sandbox Code Playgroud)

有些行有 null show_me。我们真的不知道是否应该输出这样的行,也许最好显示它(作为防止数据丢失的最后机会)?看起来 SQL 是由悲观主义者开发的。

mysql sql null

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

带有可选参数和可能为空列的 SQL 查询

当在包含空值的列上将可选 sql 参数留空时,我很难返回我期望的所有结果。

假设您有一个包含以下内容的表(referredby 是可选的,因此可以为 NULL):

Customertable
ID    CustomerName  ReferredBy
1      Aaron         Joe
2      Peter         NULL
3      Steven        Joe
Run Code Online (Sandbox Code Playgroud)

假设我想使用可选的 SQL 参数来查询引用字段,如下所示:

declare @referredby as varchar(15)

select id, customername
from customertable<br>
where referredby = isnull(@referredby, referredby)
Run Code Online (Sandbox Code Playgroud)

如果我将参数保留为空,则只会返回:
1 Aaron
3 Steven

如何使用可选参数返回所有 3 个结果?

sql t-sql sql-server-2005

4
推荐指数
1
解决办法
1万
查看次数

为null与等于null

我对= nullSQL中的原因有一个粗略的理解,并且is null此类问题不一样.

但是,为什么呢

update table 
set column = null
Run Code Online (Sandbox Code Playgroud)

一个有效的SQL语句(至少在Oracle中)?

从那个答案,我知道null可以看作有点"UNKNOWN",因此带有where column = null"should"的sql语句返回所有行,因为值column不再是未知值.我null明确地将它设置;)

我错在哪里/不明白?

那么,如果我的问题可能不清楚:为什么= nullset子句中有效,而在whereSQL语句的子句中没有?

sql oracle null sql-update

4
推荐指数
2
解决办法
213
查看次数

当你想要NULL = NULL时,在SQL中做什么?

想象一下一个表(名为Example),它有一个主键字段(KeyID)和一个外键字段(ForeignID).此外键用于将表中的行链接到单独表中的外部行/项,从而建立多对一关系.但是,对于我们的许多行,不存在这样的关系,因此我们的外键字段NULL位于这些行中.

现在,如果给出一个KeyID(例如123),获取包含具有匹配的ForeignID值的所有行的结果集的首选SQL是什么?

我天真地开始使用以下SQL:

SELECT E1.*
FROM Example E1
JOIN Example E2
  ON E2.KeyID = 123
  AND E2.ForeignID = E1.ForeignID
Run Code Online (Sandbox Code Playgroud)

当我们的匹配键行在ForeignID中具有正常值时,这非常有用.但是,如果出现了ForeignID,它将失败(不返回任何内容)NULL.做一些初步搜索后,我现在明白为什么(后读这样的问题这一个),但我还没有找到如何解决此限制的任何好的解决方案.

授予SQL Server的ANSI_NULLS设置我可以更改,但这似乎是一个肮脏的,可能有问题的黑客.

或者,我总是可以组成我自己的伪空值(如0)并将其粘贴在ForeignID列中而不是NULL,但这会破坏我为此列建立的外键约束.

那么如何最好地实现我想要的呢?

sql sql-server null

3
推荐指数
2
解决办法
168
查看次数

如何将空值传递给SqlCommand的参数

在有人评论之前已经在其他问题上回答过这个问题之前,我知道这一点......但是尽管我已经回顾了这些答案

甚至我自己的问题

我无法让我的查询返回带有null参数的值

我已经尝试简化我的代码,因此可以在这里看到.

我也试过这个

 int? i = null;

 SqlConnection connection = new SqlConnection(Properties.Settings.Default.connstring.ToString());

 SqlCommand cmd = new SqlCommand();
 cmd.Connection = connection;
 cmd.CommandText = "Select * from view_nests where parent_pk = @parent_pk";
 cmd.Parameters.AddWithValue("@parent_pk", i ?? Convert.DBNull);

 cmd.Connection.Open();

 var dataReader = cmd.ExecuteReader();
 var dataTable = new DataTable();
 dataTable.Load(dataReader);

 cmd.Connection.Close();
Run Code Online (Sandbox Code Playgroud)

我尝试过这方面的变化

cmd.Parameters.AddWithValue("@parent_pk", DBNull.Value);
Run Code Online (Sandbox Code Playgroud)

我尝试过使用该查询

cmd.CommandText = "Select * from view_nests where parent_pk = @parent_pk or @parent_pk Is Null";
Run Code Online (Sandbox Code Playgroud)

我尝试将参数明确声明为可为空

cmd.Parameters.AddWithValue("@parent_pk", i ?? Convert.DBNull).IsNullable = true; …
Run Code Online (Sandbox Code Playgroud)

c# sql-server dbnull sqlparameter

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

为什么`NOT(NULL = NULL)`false?

(NULL = NULL)假的.精细.记住"NULL被定义为不等于任何东西".

(NULL = NULL)假的.呃......好的,公平的.记住"NULL代表一个未定义的值,所以你永远不知道它是否与其他东西相等".

NOT(NULL = NULL)假的.等等,什么!

说真的,这怎么可能有效?"NOT()"运算符的行为如何依赖于正在计算的表达式的细节!?所有SQL系统都这样做吗?


演示查询:

SELECT '"1 & 1"',
       '"1 = 1" is ' + (CASE WHEN (1=1) THEN 'true' ELSE 'false' END) AS 'a=b',
       '"1 <> 1" is ' + (CASE WHEN (1<>1) THEN 'true' ELSE 'false' END) AS 'a<>b',
       '"NOT(1=1)" is ' + (CASE WHEN NOT(1=1) THEN 'true' ELSE 'false' END) AS 'NOT(a=b)',
       '"NOT(1<>1)" is ' + (CASE WHEN NOT(1<>1) THEN …
Run Code Online (Sandbox Code Playgroud)

sql sql-server null three-valued-logic logical-operators

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

为什么这个SELECT ... JOIN语句没有返回结果?

我有两个表:
1.tableA是一个包含许多列的记录列表.有一个名为"created"的时间戳列
2. tableB用于跟踪我的应用程序中已锁定tableA中的记录以供审阅的用户.它由四列组成:id,user_id,record_id和另一个时间戳列.

我正在尝试从tableA中选择最多10条记录,这些记录尚未被tableB中的任何人锁定以供查看(我还在tableA中的一些其他列中过滤WHERE子句,如记录状态).这是我到目前为止所提出的:

SELECT tableA.* FROM tableA
  LEFT OUTER JOIN tableB ON tableA.id = tableB.record_id WHERE
  tableB.id = NULL AND
  tableA.status = 'new' AND
  tableA.project != 'someproject' AND
  tableA.created BETWEEN '1999-01-01 00:00:00' AND '2010-05-06 23:59:59'
  ORDER BY tableA.created ASC LIMIT 0, 10;
Run Code Online (Sandbox Code Playgroud)

tableA中目前有几千条记录,tableB中有零条记录.肯定有这些时间戳之间的记录,我用简单的方法验证了这一点

SELECT * FROM tableA WHERE  
created BETWEEN '1999-01-01 00:00:00' AND '2010-05-06 23:59:59'  
Run Code Online (Sandbox Code Playgroud)

上面的第一个语句返回零行,第二个语句返回超过2,000行.

mysql sql select timestamp left-join

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

为什么"WHERE column = NULL"在SQL Server中抛出错误?

可能重复:
在where子句+ SQL Server中IS NULL vs = NULL

考虑以下代码 - 有人可以向我解释为什么一个查询不会抛出错误?我可以理解为什么它没有返回记录,但是它想要做什么?请记住,colA是一个int.它在2000,2005和2008 r2上的工作原理相同

create table #foo
( colA int )


insert into #foo
(colA)
values
(null)

select * from #foo --returns the one record we just created

select * from #foo where colA = null --does not throw an error and does not return a record! why??
select * from #foo where colA is null --returns the record

drop table #foo
Run Code Online (Sandbox Code Playgroud)

这个表中是否存在可以返回colA = null的记录?

我目前没有任何其他数据库供我试用 - 这是标准还是特定于MSSQL的行为?

sql sql-server sql-server-2005 sql-server-2008

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

为什么检查现有数据不包括SQL Server 2008中的NULL

这可能是其他数据库中的情况,但是当您进行以下查询时

SELECT * FROM MyTbl WHERE MyColumn != 'Foo'
Run Code Online (Sandbox Code Playgroud)

那么MyColumn的任何记录,比方说,'Bar'被取出但不是MyColumn为NULL的地方.我认为这是预期的行为,背后有一个原因,我想知道为什么.

NULL被认为等于'Foo',或者它只是不期望成为条件的一部分,因为条件(NULL!='Foo')似乎是真的.

sql sql-server

0
推荐指数
1
解决办法
308
查看次数

为什么Ansi_nulls不起作用?

假设我有两个名为aTable1,aTable2的表

aTable1将userID设置为identity并包含以下数据:

userID  email          FirstName    LastName
1       NULL               C            CC
2       NULL               D            DD
3       a@yahoo.com        A            AA
4       b@yahoo.com        B            BB
5       e@yahoo.com        E            EE
6       f@yahoo.com        NULL         NULL
7       g@yahoo.com        NULL         NULL
Run Code Online (Sandbox Code Playgroud)

aTable2包含以下数据:

userID  email          FirstName    LastName    Title
3       a@yahoo.com      A            AA       student
4       b@yahoo.com      B            BB       student
5       e@yahoo.com      E            EE       student
NULL    NULL             C            CC       dean
NULL    NULL             D            DD       advisor
NULL    f@yahoo.com NULL    NULL               student2
NULL    g@yahoo.com NULL    NULL               student3
Run Code Online (Sandbox Code Playgroud)

我想基于aTable1更新aTable2.userID,但知道2个表中有空值,所以我喜欢这样:

set ANSI_NULLS off
update …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

0
推荐指数
1
解决办法
204
查看次数

column = null不是woking

我解雇了一个查询

SELECT * FROM tblEmp WHERE emp_id = 9737  AND mgr_id = NULL
Run Code Online (Sandbox Code Playgroud)

它没有回报任何价值.直到昨天它才这样做.什么可能改变?我们很多人在同一台服务器上工作,所以有可能有人改变了一些东西.

为了获得结果,我必须解雇

SELECT * FROM tblEmp WHERE emp_id = 9737  AND mgr_id IS NULL
Run Code Online (Sandbox Code Playgroud)

这是给出适当的输出.

由于我正在使用此查询,.Net我担心如果设置重置为上一个时它会中断.会吗?

sql sql-server

0
推荐指数
1
解决办法
58
查看次数