在Select语句中替换NULL和空字符串

mba*_*dtk 14 sql t-sql

我有一个列可以有NULL空格(或)空''值(即).我想用有效值替换这两个值'UNKNOWN'.我发现的各种解决方案建议修改表格本身的值.但是,在这种情况下,这不是一个选项,因为数据库是针对第三方应用程序开发和/或打补得很差(实际上我认为我的罗威纳犬可以做得更好).我担心修改基础数据可能会导致应用程序融入吸烟洞.

我尝试过以下命令的变体:

COALESCE(Address.COUNTRY, 'United States') -- Won't replace empty string as it is not NULL
REPLACE(Address.COUNTRY, '', 'United States') -- Doesn't replace empty string
ISNULL(Address.COUNTRY, 'United States') -- Works for NULL but not empty string
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用该CASE声明,但我希望有一个更优雅/更有效的解决方案.

当我说我已经找到解决我的具体问题并且没有找到答案时,你将不得不相信我.但是,如果我忽略了某些东西,请向我展示一条明亮的道路.

rs.*_*rs. 56

试试这个

COALESCE(NULLIF(Address.COUNTRY,''), 'United States')
Run Code Online (Sandbox Code Playgroud)

  • 这个语句有两个函数,一个是`NULLIF`,它将空字符串转换为null,然后是'coalesce`,它检查null (4认同)

Bra*_*rad 5

听起来你想要一个视图而不是改变实际的表数据.

Coalesce(NullIf(rtrim(Address.Country),''),'United States')
Run Code Online (Sandbox Code Playgroud)

如果它实际上是一个空字符串(或空字符串),那么这将强制您的列为null,然后coalesce将使用null.