标签: sql-function

获取SQL计算列的插入值

我的表结构如下,

CREATE TABLE tbl_Info
(
    [SSEID]         BIGINT              NOT NULL    IDENTITY(1,1),
    [ShortenKey]    AS ConvertToBase([SSEID]),
    [Title]         VARCHAR(500)        NULL,       
)
Run Code Online (Sandbox Code Playgroud)

ConvertToBase 跟随功能

CREATE FUNCTION ConvertToBase(@Number BIGINT)
RETURNS VARCHAR(15)
AS 
BEGIN
      // implementation
END
Run Code Online (Sandbox Code Playgroud)

我需要在INSERT查询后获取生成的[ShortenKey]值。这该怎么做 ?

sql-server calculated-columns sql-function autogeneratecolumn

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

如何在SQL中按max(a,b)排序?

请考虑下表:

 id    a    b
--------------
 1     5    1
 2     2    3
 3     4    2
 4     3    6
 5     0    1
 6     2    2
Run Code Online (Sandbox Code Playgroud)

我想按max(a,b)降序排序,结果将是:

 id    a    b
--------------
 4     3    6
 1     5    1
 3     4    2
 2     2    3
 6     2    2
 5     0    1
Run Code Online (Sandbox Code Playgroud)

执行此类排序的SQL查询是什么?

mysql sql sql-order-by sql-function

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

将列的值除以另一列

我想将列的值除以另一列的值,并将结果显示为单独的列

例如:

project name             total-percent        no.of screen
------------            --------------        -------------
pro-1                     150                     5
pro-2                      50                     3

现在我想将总百分比除以no.of屏幕,并将结果显示在另一列中

sql sql-function

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

小数点如何设置?

就像round向上或向下舍入一样,尽管您可以控制小数点,但不能在我的情况下使用它。

问题是floor和ceil不允许控制小数点,在地板上,你可以使用的情况下truncate,这将变成: 123.1233到123.12,这是基本相同的。

但是,在小区的情况下,当你想打开123.123来123.13。如何才能做到这一点?

mysql sql sql-function

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

在表值函数SQL Server中使用Execute()方法

我试图在SQL Server中创建一个表值函数.我的问题是我找不到适合SQL的语法.我一直在收到错误.我不知道是否可以execute()在表值函数中使用方法.我尝试声明和设置变量,并在oridinary sql查询中使用execute方法,它的工作原理.

我的SQL:

CREATE FUNCTION SortRoutePartByDay
(   
    @date datetime
)
RETURNS TABLE 
AS
Begin
    declare @cmdtext varchar(max)  
    declare @Daynameofweek varchar(10)
    set @Daynameofweek = datename(weekday, @date)
    set @cmdtext =  'select * from RoutePartPart where ' +@Daynameofweek+' =1';

    RETURN 
    (
        execute(@cmdtext)
    )
GO
Run Code Online (Sandbox Code Playgroud)

到目前为止我的错误是:

消息156,级别15,状态1,过程SortRoutePartByDay,第21行
关键字'execute'附近的语法不正确.
消息102,级别15,状态1,过程SortRoutePartByDay,第23行
')'附近的语法不正确.

RoutePartPart DDL:

    CREATE TABLE [dbo].[RoutePartPart](
        [RouteID] [int] NOT NULL,
        [RoutePartNo] [smallint] NOT NULL,
        [RoutePartPartNo] [smallint] NOT NULL,
        [PickupAreaGrpID] [int] NULL,
        [DeliveryAreaGrpID] [int] NULL,
        [Monday] [bit] NULL,
        [Tuesday] [bit] NULL,
        [Wednesday] [bit] …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-function

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

插入时的MySQL slug函数

我有一个带有slug字段的表.通过操纵另一个字段,可以通过函数自动填充此字段吗?

就像是:

INSERT INTO people('name','slug') VALUES ('xxxx',SLUG(name));
Run Code Online (Sandbox Code Playgroud)

mysql sql sql-function

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

函数返回最后2个数字大于INT数据类型的某个值的值

是否有任何SQL函数可用于返回所有那些最后2个数字大于31的记录.基本上,有一列:INT数据类型中的OpenDate存储为'19810281',后两个值为81(应该是一个日期)所以它有错误的数据.

我想查询所有那些最后2列数的坏记录:OpenDate大于31?任何建议将不胜感激.

sql sql-function sql-server-2008

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

为什么我不能在T-SQL函数中的表变量上运行INSERT EXEC?

我的功能看起来像这样:

CREATE FUNCTION fn_FileSys_DirExists(@dirName AS nvarchar(260))
RETURNS bit
AS
BEGIN
    DECLARE @dirExists int
    DECLARE @fileResults TABLE
    (
        file_exists int,
        file_is_a_directory int,
        parent_directory_exists int
    )

    INSERT @fileResults (file_exists, file_is_a_directory, parent_directory_exists)
    EXEC master.dbo.xp_fileexist @dirName

    SELECT @dirExists = file_is_a_directory FROM @fileResults
    RETURN @dirExists
END
Run Code Online (Sandbox Code Playgroud)

当我尝试执行上面的SQL时,我收到以下错误:

在函数中无效使用副作用运算符'INSERT EXEC'.

我认为函数中的表变量的操作不被视为副作用操作?

t-sql sql-server sql-function table-variable sql-server-2012

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

为什么这个 SQL 函数 TicksToDateTime 是不确定的?以及如何使其具有确定性?

我有以下功能“TicksToDateTime”

CREATE FUNCTION [dbo].[TicksToDateTime] (@t bigint)
RETURNS datetime
WITH SCHEMABINDING
AS
-- converts the given datetime to .NET-compatible ticks
-- see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdatetimeclasstickstopic.asp
BEGIN 
    declare @result datetime
    if (@t=0)
        set @result = null
    else
        if (@t < 552877919999983334)
            set @result = cast ('1753-1-1' as datetime)
        else
            if (@t=3155378975999999999)
                set @result = cast ('9999-12-1' as datetime)
            else
                set @result = CAST((@t - 599266080000000000) / 10000000 / 24 / 60 / 60 AS datetime)
    return @result
END
GO
Run Code Online (Sandbox Code Playgroud)

并在表的计算列中使用它:

[CallDateRaw] BIGINT NOT NULL, …
Run Code Online (Sandbox Code Playgroud)

sql sql-server function calculated-columns sql-function

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

Oracle/general sql - 是否总是检查条件?

有一个查询,它做这样的事情:

select * from cars c where c.WheelCount > 0 or CountWheels(c) > 0
Run Code Online (Sandbox Code Playgroud)

该函数是CountWheels为每一行调用,还是只为那些行调用t.Count <= 0?

问题是该函数包含每次都应该执行的逻辑——很可能是一个糟糕的设计;这是我几乎无法控制的代码的一部分。

这是一个简化的例子,我不能只写,select * from cars c where CountWheels(c.Body) > 0因为这会删除一些数据。把它想象成:给我所有曾经有轮子的汽车,即使其中一些现在可能有 0 个轮子。

sql oracle case sql-function where-clause

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