提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:莫成敏|2020-01-08 09:39:18.970|阅读 918 次
概述:本文提供了一个方便的功能,该功能仅在真正需要的地方添加带引号的分隔符,然后坐下来,让SQL Prompt快速删除任何多余的方括号。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
SQL Prompt根据数据库的对象名称、语法和代码片段自动进行检索,为用户提供合适的代码选择。自动脚本设置使代码简单易读--当开发者不大熟悉脚本时尤其有用。SQL Prompt安装即可使用,能大幅提高编码效率。此外,用户还可根据需要进行自定义,使之以预想的方式工作。
如果在标识符中避免使用非法字符和保留字,则几乎不需要分隔符。遗憾的是,SSMS在生成构建脚本时会不加选择地使用方括号分隔符,以防万一。本文提供了一个方便的功能,该功能仅在真正需要的地方添加带引号的分隔符,然后坐下来,让SQL Prompt快速删除任何多余的方括号。
对于某些人来说,“SQL Prompt”菜单中更令人困惑的选项之一是“删除方括号”项。什么方括号,为什么要删除它们?他们的目的是什么,为什么是方形?这些都是好问题。
为什么要使用分隔符?
标识符,即SQL Server元数据的名称,例如对象、别名、列和索引,必须符合某些规则。如果没有,则必须定界它们。您只需要很少分隔或“引用”标识符即可。SQL要求您分隔任何标识符,这些标识符是保留字,包含不允许的字符或以为特殊对象保留的符号开头。
SQL在标识符中仅允许某些字符。这些字符包括字母、十进制数字和一些符号。普通标识符必须以字母开头,并且只能包含字母、下划线字符(_)和数字。
分隔符为什么有问题?
没有经验的SQL Server开发人员会希望不必要地分隔标识符,并且会避免在名称中同时使用非法字符和保留字。但是,当您通过SSMS获取脚本时,SQL Server选择分隔所有标识符,无论它是否确实需要它。万一您使用的标识符将来可能成为保留字,它就会采用这种谨慎的方法。几乎所有开发人员都希望在可能的情况下删除它们,因为它们使SQL代码难以阅读。SQL Prompt提供了“删除方括号”操作,以纠正SQL Server脚本编写中的怪癖。
误使用带分隔符的标识符
如果您遵循对象命名规则,则几乎不需要分隔符,并且代码可能会更清晰。在下面的示例中,我允许我自己使用它们,只是为了指出您遇到麻烦或恶作剧的速度有多快。这段代码可以编译并运行而不会产生抱怨:
说服自己可以运行,但不是要继承的代码,请尝试使用“提示”的“删除方括号”操作(从“SQL Prompt”菜单或“操作”列表中,或使用键盘快捷键Ctrl + B,Crtl+ B)。它不能删除那些讨厌的方括号吗?如果确实如此,则该代码将无法运行。
但是,在SSMS中,将Person用脚本写出来。来自AdventureWorks的Person表,您将很快获得一个充满不必要方括号的构建脚本:
这次,当您运行“删除方括号”操作时,所有这些分隔符将消失,使其更加整洁并易于阅读。
引用版本如何?
不,什么也没有发生。SQL Prompt只对方括号感兴趣,而不对分隔标识符感兴趣。这很有用,因为这意味着您可以在真正需要的地方使用标准带引号的标识符,然后使用“提示”清理SSMS产生的所有方括号标识符。
为什么要担心引用标识符?
每当您生成需要获取元数据的SQL例程时,就需要准备好分隔表、列、类型、索引和对象的名称。我做了很多这样的事情,我不得不使用一些混乱或错误的系统例程。结果与SSMS相同;您最终不得不分隔一切。提供了系统过程sp_validname来检查标识符是否有效。不幸的是,它有一个“有效”的定义,这对我们来说毫无用处,因为它只会在标识符错误时才认为它是无效的,即使在分隔符也是如此。 仅当标识符为空、NULL或Unicode替换字符U + FFFF时,情况才会如此。 它甚至无法检查U + FFFF。
QuoteName()函数只是添加了方括号分隔符,如果字符串中已经有一个封闭的方括号字符,则将其“转义”。对此进行了简单演示,如下所示:
为了证明多余的右方括号只是“转义”字符串中的方括号,我们可以尝试使用此方括号表达式创建表:
正常工作:
我们甚至可以指定表名来删除它:
如果您要求SQL Prompt删除方括号,则在上面的代码中明智地将其保留。
更好的'QuoteName',仅在必要时用于分隔标识符当然,分隔的答案是设计一种检查标识符的方法,并且仅在必要时才对其进行分隔。 我想,我们应该具有可怜的sp_validname功能。尽管可以很容易地通过一个过程来完成它,但我还是将其作为一个函数来完成。 它可以接受两个参数@TheIdeintifier和@TheDelimiter,默认情况下,后者为双引号,尽管您可以将其设置为任何有效的分隔符。
当我直接从元数据创建脚本时可以使用它,然后可以执行该脚本。您永远无法确定从元数据视图中获得的名称将是有效的,因此您需要进行相应的检查和补偿。在您永远看不到代码的地方,那么值得用方括号“引用”所有内容。毕竟,如果它从未被发现过,那不会有任何危害。但是,对于任何可见的事物,都值得承担额外的麻烦。
结论
只要有可能,就应该避免使用不是有效SQL的标识符。这样,您可以避免任何误解或歧义。在极少数情况下,您可能需要在标识符(通常是别名)中引入一些无效字符。您可能需要在列名中进行操作,或者最好在列名中使用别名,以确保在报表中可以理解它们。然后,您需要分隔它们。
每当我们需要能够轻松查看和理解SQL时,就需要删除所有多余的不必要的分隔符。SQL Prompt具有出色的解决方案。通过为SSMS中的表生成脚本,然后运行“删除方括号”操作,您将很快说服自己。从方括号的装饰后面看到桌子的结构是非常令人满意的。
本教程内容到这里就结束了,感兴趣的朋友请继续关注我们网站哦~您也可以下载SQL Prompt试用版免费试用~想要购买SQL Prompt正版授权,或了解更多产品信息请点击
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢