如何使用 SQL Server 将空格转换为空值?
我有一个表,该表上的列包含一些记录的空白空间。现在我需要将数据移动到另一个表并用 NULL
值替换空格。
我尝试使用:
REPLACE(ltrim(rtrim(col1)),' ',NULL)
但它不起作用。它将把 col1
的所有值转换为 NULL
。我只想将那些有空格的值转换为 NULL。
I have a table and the columns on this table contains empty spaces for some records. Now I need to move the data to another table and replace the empty spaces with a NULL
value.
I tried to use:
REPLACE(ltrim(rtrim(col1)),' ',NULL)
but it doesn't work. It will convert all of the values of col1
to NULL
. I just want to convert only those values that have empty spaces to NULL
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
你尝试过这个吗?
正如评论者指出的那样,您不必执行
ltrim()
或rtrim()
,并且NULL
列不会匹配''
。Did you try this?
As the commenters point out, you don't have to do
ltrim()
orrtrim()
, andNULL
columns will not match''
.SQL Server 在比较字符串时会忽略尾随空格,因此 ' ' = ''。只需使用以下查询进行更新,
表中的 NULL 值将保持为 NULL,并且带有任何数字的仅空格字符的 col1 将更改为 NULL。
如果您想在从一个表复制到另一个表的过程中执行此操作,请使用以下命令:
SQL Server ignores trailing whitespace when comparing strings, so ' ' = ''. Just use the following query for your update
NULL values in your table will stay NULL, and col1s with any number on space only characters will be changed to NULL.
If you want to do it during your copy from one table to another, use this:
此代码生成一些 SQL,可以在数据库中的每个表和列上实现此目的:
This code generates some SQL which can achieve this on every table and column in the database:
从源表中进行选择时,case 语句应该可以解决问题:
另外,需要注意的一件事是 LTRIM 和 RTRIM 将值从空格 (' ') 减少为空白 ('')。如果需要删除空格,则应适当修改 case 语句:
A case statement should do the trick when selecting from your source table:
Also, one thing to note is that your LTRIM and RTRIM reduce the value from a space (' ') to blank (''). If you need to remove white space, then the case statement should be modified appropriately:
也许是这样的?
Maybe something like this?
这是给你的一个正则表达式。
本质上是找到其中没有字母或数字的任何列并将其设置为空。如果您的列仅包含特殊字符,则可能需要更新。
here's a regex one for ya.
essentially finds any columns that dont have letters or numbers in them and sets it to null. might have to update if you have columns with just special characters.
我使用 NULLIF 函数解决了类似的问题:
来自 T-SQL 参考:< /a>
I solved a similar problem using
NULLIF
function:From the T-SQL reference: