小编Joe*_*lli的帖子

如果不存在则创建UDF(用户定义函数),如果存在则跳过它

嗨,谢谢你读这篇文章.

我试图使用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)

sql t-sql sql-server

30
推荐指数
3
解决办法
3万
查看次数

MySQL将timediff输出转换为日,小时,分钟,秒格式

这是我的查询:

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分钟等

mysql

15
推荐指数
2
解决办法
5万
查看次数

如何使用php和mysql创建标记系统?

想知道我如何在php和mysql数据库中创建标记系统,我最初的想法是在表格中创建一个存储文章的行,命名标签,并列出用逗号分隔的标签,但我不知道如何我可以创建一个搜索匹配标签的查询,我不想每次有人点击标签时查询每篇文章.有人可以帮忙吗?

php mysql tags tagging database-design

13
推荐指数
1
解决办法
2万
查看次数

SQL for Oracle检查是否存在约束

在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特定的表来查找答案.

sql sql-server oracle

12
推荐指数
1
解决办法
2万
查看次数

禁用SQL Server Management Studio 2005中的"保存"提示

我只想关闭所有查询窗口而不保存,但SSMS总是提示我,我找不到关闭开关.有任何想法吗?

sql-server ssms sql-server-2005

11
推荐指数
2
解决办法
2064
查看次数

SQL:Bit或char更好(1)

检索位或char(1)有什么性能差异吗?

只是为了好奇=]

更新:我正在使用SQL Server 2008!

sql sql-server performance sql-server-2008

11
推荐指数
1
解决办法
3万
查看次数

SQL面试问题

我在接受采访时得到了以下问题:给出一个自然数字表和一些缺失的数据表,提供两个表的输出,第一个表中的数字间隙开始,第二个表结束.例:

 ____    ________
|    |   |   |   |
| 1  |   | 3 | 3 |
| 2  |   | 6 | 7 |
| 4  |   | 10| 12|
| 5  |   |___|___|
| 8  |
| 9  |
| 13 |
|____|

sql gaps-and-islands

10
推荐指数
1
解决办法
1944
查看次数

MYSQL - 改变2020年至2011年的日期

我有YYYY-MM-DD格式的大量日期

但我整年都在2020-MM-DD

我想把它改成2011-MM-DD

我怎样才能做到这一点?

mysql datetime date sql-update

10
推荐指数
2
解决办法
6279
查看次数

mysql UNION结果的行数少于表行数的总和

我正在使用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)

问题出在哪儿?

mysql union rowcount

10
推荐指数
1
解决办法
2723
查看次数

在SQL视图中使用COALESCE

我需要从几个表创建一个视图.视图中的一列必须由一个表中的多个行组成,作为带逗号分隔值的字符串.

这是我想要做的简化示例.

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)

t-sql sql-server coalesce sql-server-2008 sql-view

9
推荐指数
2
解决办法
7657
查看次数