什么是格式化输出的TSQL语法,以便列值显示为字符串,用逗号分隔.
例如,我的表CARS具有以下内容:
CarID CarName
----------------
1 Porsche
2 Mercedes
3 Ferrari
Run Code Online (Sandbox Code Playgroud)
我如何获得汽车名称: Porsche, Mercedes, Ferrari
我有一个SQL查询,它查询我不需要也不想理解的巨大数据库(如数百个具有难以读取的名称的表,如CMM-CPP-FAP-ADD)数据库.此查询的结果需要存储在临时表中以提供报告.
我需要创建临时表,但是要查看数百个视图/表以查找此处表示的数据类型,我不得不怀疑是否有更好的方法来构造此表.
任何人都可以建议我如何使用任何SQL Server 2008工具来划分我的SQL 2000数据库中的源数据类型?
作为一般示例,我想通过以下查询来了解:
SELECT Auth_First_Name, Auth_Last_Name, Auth_Favorite_Number
FROM Authors
Run Code Online (Sandbox Code Playgroud)
而不是实际的结果,我想知道:
Auth_First_Name is char(25)
Auth_Last_Name is char(50)
Auth_Favorite_Number is int
Run Code Online (Sandbox Code Playgroud)
我对约束不感兴趣,我真的只想知道数据类型.
我知道,我知道我在问题中写的内容我不应该感到惊讶.但我的情况是继续在继承的POS系统上工作,我的前任显然不知道JOIN,所以当我查看其中一个加载60秒的内部页面时,我发现它很快,将这8个查询重写为一个查询JOINs情况.问题是,除了不了解JOIN之外,他似乎也对多个数据库感到惊讶并且惊讶,他们使用不同的排序规则.事实上,我们使用所有"正常"的拉丁字符,说英语的人会考虑整个字母表,这整个事情将在几个月内不再使用,所以我只需要一个bandaid.
简而言之,我需要某种方法来转换为单个排序规则,因此我可以比较两个数据库中的两个字段.
确切的错误是:
无法在等于操作中解决"SQL_Latin1_General_CP850_CI_AI"和"SQL_Latin1_General_CP1_CI_AS"之间的排序规则冲突.
我有以下SQL查询:
DECLARE @MyVar datetime = '1/1/2010'
SELECT @MyVar
Run Code Online (Sandbox Code Playgroud)
这自然会返回'2010年1月1日'.
我想要做的是有一个日期列表,比如说:
1/1/2010
2/1/2010
3/1/2010
4/1/2010
5/1/2010
Run Code Online (Sandbox Code Playgroud)
然后我想通过数字FOR FOR EACH并运行SQL Query.
像(伪代码)的东西:
List = 1/1/2010,2/1/2010,3/1/2010,4/1/2010,5/1/2010
For each x in List
do
DECLARE @MyVar datetime = x
SELECT @MyVar
Run Code Online (Sandbox Code Playgroud)
所以这会回来: -
1/1/2010 2/1/2010 3/1/2010 4/1/2010 5/1/2010
我希望这将数据作为一个结果集而不是多个结果集返回,因此我可能需要在查询结束时使用某种联合,因此循环的每次迭代都会联合到下一个结果集.
编辑
我有一个接受'到期'参数的大型查询,我需要运行24次,每次都需要能够提供特定的日期(这些日期将是动态的)我想避免使用union alls重复我的查询24次,就好像我需要回来添加额外的列一样,这将是非常耗时的.
我有一张包含200条记录的表格,其中10条记录的文字包含"TAX"字样.
当我执行时
Select * from tbl1 WHERE [TextCol] LIKE '%TAX%'
Run Code Online (Sandbox Code Playgroud)
然后我正确地得到了这10条记录的结果集.
但是,当我试图排除那些记录
Select * from tbl1 WHERE [TextCol] NOT LIKE '%TAX%'
Run Code Online (Sandbox Code Playgroud)
它仅返回100条记录,而不是190条记录.
如果我需要将存储过程(SP)从一个SQL Server复制到另一个SQL Server,我右键单击SSMS中的SP并选择Script Stored Procedure as> CREATE to> New Query Editor Window.然后我通过右键单击该窗口并选择Connection> Change Connection ...然后选择新服务器和F5以在新服务器上运行create来更改连接.
所以我的问题是"连接到另一个SQL Server的T-SQL语法是什么?" 这样我就可以将它粘贴到创建脚本的顶部,然后运行F5来运行它,它将切换到新服务器并运行创建脚本.
在输入问题的同时,我意识到,如果我给你的背景是我正在尝试做的事情,那么你可能会想出一个更快更好的方法来实现这个目标.
在创建存储过程,视图,函数等时,最好对对象执行DROP ... CREATE或ALTER吗?
我已经看过许多"标准"文件,说明要做DROP ... CREATE,但我看到了许多提倡ALTER方法的评论和论据.
ALTER方法保留了安全性,而我听说DROP ... CREATE方法在第一次执行时强制重新编译整个SP而不仅仅是一个语句级别的重新编译.
有人可以告诉我,如果使用一个优于另一个有其他优点/缺点吗?
我有10个transact SQL脚本,每个脚本创建一个表并用数据填充它.
我正在尝试创建一个主sql脚本,它将运行其他10个脚本中的每一个.
有没有办法用TSQL/TRANSACTSQL为Microsoft SQL Server 2008从当前的tsql脚本中执行另一个tsql脚本?
这旨在通过SQL Server Management Studio(SSMS)运行.
谢谢!
我是SQL Server的新手.我通过SQL Server Management Studio登录到我的数据库.
我有一个存储过程列表.如何查看存储过程代码?
右键单击存储过程没有任何选项view contents of stored procedure.
谢谢.
据我所知,基于SQL Server中的不同数据类型,哈希值会有所不同.一个支持Unicode另一个不....所以(也整理)
我使用char(32)作为数据类型,但输出很奇怪.用这个
select HASHBYTES('MD5','MD5Text')
Run Code Online (Sandbox Code Playgroud)
给出这个输出:
0xA891DB2DA259280A66FD5F35201CAB6A
Run Code Online (Sandbox Code Playgroud)
什么时候
declare @h char(32)
select @h=HASHBYTES('MD5','MD5Text')
select @h,LEN(@h)
Run Code Online (Sandbox Code Playgroud)
输出:
Ё'Ы-ўY(fэ_5«j
所以我是SQL Server的新手.
请问任何人,请告诉我应该用什么数据类型来存储哈希?