嗨,谢谢你读这篇文章.
我试图使用IF EXISTS/IF NOT EXISTS语句来检查对象是否存在.基本上我想跳过它,如果它在那里或创建它,如果它不存在.
我用两种不同的方式编写代码,但是我收到一个错误:创建函数必须是批处理中唯一的函数.如果我把GO放在下面的插图语句之间,我会收到另一个警告:GO附近的语法不正确.
我在哪里错了?
IF NOT EXISTS
(select * from Information_schema.Routines where SPECIFIC_SCHEMA='dbo'
AND SPECIFIC_NAME = 'FMT_PHONE_NBR' AND Routine_Type='FUNCTION')
/*CREATE FUNCTION TO FORMAT PHONE NUMBERS*/
CREATE FUNCTION [dbo].[FMT_PHONE_NBR](@phoneNumber VARCHAR(12))
RETURNS VARCHAR(12)
AS
BEGIN
RETURN SUBSTRING(@phoneNumber, 1, 3) + '-' +
SUBSTRING(@phoneNumber, 4, 3) + '-' +
SUBSTRING(@phoneNumber, 7, 4)
END
GO
Run Code Online (Sandbox Code Playgroud)
或这个:
IF NOT EXISTS
(SELECT name FROM sys.objects WHERE name = 'dbo.FMT_PHONE_NBR')
GO
/*CREATE FUNCTION TO FORMAT PHONE NUMBERS*/
CREATE FUNCTION [dbo].[FMT_PHONE_NBR](@phoneNumber VARCHAR(12))
RETURNS VARCHAR(12)
AS …Run Code Online (Sandbox Code Playgroud) 这是我的查询:
SELECT TIMEDIFF(end_time,start_time) AS "total" FROM `metrics`;
Run Code Online (Sandbox Code Playgroud)
这给了我:
116:12:10
Run Code Online (Sandbox Code Playgroud)
意思是116小时12分10秒.
相反,我希望它说4天20小时,12分钟等
想知道我如何在php和mysql数据库中创建标记系统,我最初的想法是在表格中创建一个存储文章的行,命名标签,并列出用逗号分隔的标签,但我不知道如何我可以创建一个搜索匹配标签的查询,我不想每次有人点击标签时查询每篇文章.有人可以帮忙吗?
在SQL Server中,我可以使用下面的SQL来检查是否存在约束,以及它是否为主键,触发器等.
SELECT *
FROM dbo.sysobjects
WHERE id = OBJECT_ID(N'[SCHEMA].[TABLENAME]')
AND OBJECTPROPERTY(id, N'IsPrimaryKey') = 1
Run Code Online (Sandbox Code Playgroud)
什么是Oracle等价物,因为我的查询使用SQL Server特定的表来查找答案.
我只想关闭所有查询窗口而不保存,但SSMS总是提示我,我找不到关闭开关.有任何想法吗?
检索位或char(1)有什么性能差异吗?
只是为了好奇=]
更新:我正在使用SQL Server 2008!
我在接受采访时得到了以下问题:给出一个自然数字表和一些缺失的数据表,提供两个表的输出,第一个表中的数字间隙开始,第二个表结束.例:
____ ________ | | | | | | 1 | | 3 | 3 | | 2 | | 6 | 7 | | 4 | | 10| 12| | 5 | |___|___| | 8 | | 9 | | 13 | |____|
我有YYYY-MM-DD格式的大量日期
但我整年都在2020-MM-DD
我想把它改成2011-MM-DD
我怎样才能做到这一点?
我正在使用UNION不同的表中的所有名称.
我的表一共有大约10000行.
但查询返回468行!!
我的查询是:
SELECT name FROM `shopping`
UNION
SELECT name FROM stores
UNION
SELECT name FROM concert
UNION
SELECT val AS name FROM event
UNION
SELECT name FROM fastfood
Run Code Online (Sandbox Code Playgroud)
问题出在哪儿?
我需要从几个表创建一个视图.视图中的一列必须由一个表中的多个行组成,作为带逗号分隔值的字符串.
这是我想要做的简化示例.
Customers:
CustomerId int
CustomerName VARCHAR(100)
Orders:
CustomerId int
OrderName VARCHAR(100)
Run Code Online (Sandbox Code Playgroud)
客户和订单之间存在一对多的关系.所以给出了这些数据
Customers
1 'John'
2 'Marry'
Orders
1 'New Hat'
1 'New Book'
1 'New Phone'
Run Code Online (Sandbox Code Playgroud)
我希望视图是这样的:
Name Orders
'John' New Hat, New Book, New Phone
'Marry' NULL
Run Code Online (Sandbox Code Playgroud)
因此无论他们是否有订单,每个人都会出现在表格中.
我有一个存储过程,我需要转换到这个视图,但似乎你不能声明参数并在视图中调用存储过程.有关如何将此查询添加到视图中的任何建议?
CREATE PROCEDURE getCustomerOrders(@customerId int)
AS
DECLARE @CustomerName varchar(100)
DECLARE @Orders varchar (5000)
SELECT @Orders=COALESCE(@Orders,'') + COALESCE(OrderName,'') + ','
FROM Orders WHERE CustomerId=@customerId
-- this has to be done separately in case orders returns NULL, so no customers are …Run Code Online (Sandbox Code Playgroud)