我正在使用C#和SQL Server.
看看下面的SQL:
SELECT table1.id, table1.description, table2.name, table2.surname
FROM table1
INNER JOIN table2 ON table1.EmpID = table2.EmpID
Run Code Online (Sandbox Code Playgroud)
它很直接,工作正常.它可以获取table1的表就好了内部连接的数据table1.empid来table2.name和table2.surname正确.
现在,有时table1.empid是null,当它是时,这个SQL只是忽略带有null值的"row"; 根据标准,这很正常.
我需要的是获取带有空值的"行",当table1.empid为null时,我需要将自定义值设置为table2.name和table2.surname.
我一直在玩isnull(),但我所做的就是让它变得更糟.
有什么建议?
谢谢
运行CodeSniffer PHP样式测试给了我以下错误:
The use of function is_null() is forbidden
Squiz.PHP.ForbiddenFunctions.Found
Run Code Online (Sandbox Code Playgroud)
为什么禁止使用is_null()?
is null和之间有什么区别<=> NULL ?
mysql> SELECT * FROM param WHERE num is null;
+-----+------+
| id | num |
+-----+------+
| 8 | NULL |
| 225 | NULL |
+-----+------+
2 rows in set (0.00 sec)
mysql> SELECT * FROM param WHERE num<>NULL;
Empty set (0.00 sec)
mysql> SELECT * FROM param WHERE num<=>NULL;
+-----+------+
| id | num |
+-----+------+
| 8 | NULL |
| 225 | NULL |
+-----+------+
Run Code Online (Sandbox Code Playgroud)
标准版本的差异?<=>如果有参数,我没有看到参数的实际用途is null
我有这个PostgreSQL表,测试一下:
a | b | c | d
---+---+---+---
5 | | 5 | 7
5 | 6 | |
1 | 2 | 3 |
Run Code Online (Sandbox Code Playgroud)
我想查询所有b值不为NULL的元组:
SELECT * FROM test WHERE b != NULL;
SELECT * FROM test WHERE b <> NULL;
Run Code Online (Sandbox Code Playgroud)
这两个命令都没有返回记录:
a | b | c | d
---+---+---+---
(0 rows)
Run Code Online (Sandbox Code Playgroud)
我应该使用什么命令来选择所有具有 ab 值的元组?
我想在sql server中有类似于ISNULL()的函数,除了它应该检查表达式为null和空.
如果第一个参数为null或为空,则返回第二个参数.
有人能帮我吗?
我试图将名为"Number"的列字段的值递增1,如果该值当前为Null,我想将该值设置为1,因为Null值不能递增.我发现了isNull()函数,并且没有使用以下语句获得结果:
Update SomeTable set Number = IsNull(Number, Number+ 1) where
ItemCode = '000000' ;
Run Code Online (Sandbox Code Playgroud)
我的问题基本上是如何以1的增量同时更新字段值,如果当前为"NULL"则将值设置为1
谢谢!
我有一个奇怪的 CSV,它有“null”作为值,并且它有一个空单元格作为值。
所以我的行看起来像这样:
null,0,0,0,1,,,,0,0,0,null
Run Code Online (Sandbox Code Playgroud)
我除了读取和重写文件之外什么也没做:
f = pd.read_csv(input_file,sep=',', quotechar='"', engine='python', converters={i: str for i in range(0, 155)})
f.to_csv(output_file, sep=',', escapechar=' ', quotechar='"', quoting=csv.QUOTE_MINIMAL, index=False)
Run Code Online (Sandbox Code Playgroud)
上面是技术上“重命名”一个文件,但这是为了证明我得到了整个文件的相同值,稍后我将修剪某些列(我已经这样做了,但发现数据是错误的)。
那么,如何保留“null”和“”而不读取每一行/列,并创建一个检查每个单元格的函数?
这可能吗?
我尝试了 na_rep="null",但随后所有 '' 都转换为 'null',或者如果我删除它们,则会丢失我的 'null' 值。
这是我在formview中的select语句的一部分,它在更新过程中一直运行,直到它达到空值.
(SELECT TOP 1 F.tel_id FROM TELEPHONE as F where F.tel_type_id = 3 AND F.client_id = @id
ORDER BY sort_no ) AS faxid
Run Code Online (Sandbox Code Playgroud)
所以我尝试以下列方式使用ISNULL函数,但它会抛出错误.怎么做到呢?
ISNULL((SELECT TOP 1 F.tel_id FROM TELEPHONE as F where F.tel_type_id = 3 AND F.client_id= @id ORDER BY sort_no ) AS faxid ,0) AS faxid
Run Code Online (Sandbox Code Playgroud) 我正在编写一个通用搜索存储过程来基于用户可以在UI中选择的许多过滤器(使用MS-SQL 2008)在表中进行搜索.
这是简化版:
CREATE PROCEDURE SearchAll
@FirstName NVARCHAR(MAX) = NULL,
@LastName NVARCHAR(MAX) = NULL,
@Age INT = NULL
AS
SELECT *
FROM persons
WHERE
(@FirstName IS NULL OR FirstName = @firstname)
AND (@LastName IS NULL OR LastName = @LastName)
AND (@Age IS NULL OR Age = @Age)
Run Code Online (Sandbox Code Playgroud)
似乎如果我将NULL传递给@Age,那么就没有性能成本.但是,当我测试大量数据时,我失去了很好的性能!
这里的查询是相同的逻辑但实际上非常不同:
DECLARE @FirstName NVARCHAR(MAX) = NULL
DECLARE @Age INT = 23
------------First slow------------
SELECT *
FROM persons
WHERE
(@FirstName IS NULL OR FirstName = @firstname)
AND (@Age IS NULL OR Age = …Run Code Online (Sandbox Code Playgroud) 我希望以下内容SQL statement能够归来b.
你能指出我做错了什么吗?
SELECT CASE WHEN ISNULL(0,'')='' THEN 'a' ELSE 'b' END
Run Code Online (Sandbox Code Playgroud) isnull ×10
sql-server ×4
null ×3
sql ×3
t-sql ×2
c# ×1
case ×1
coalesce ×1
codesniffer ×1
formview ×1
inner-join ×1
mysql ×1
pandas ×1
php ×1
postgresql ×1
python ×1
sql-update ×1