T-sql下标仅来自字符串的数字,不能使用创建过程,创建表等

时间:2018-07-27 22:24:06

标签: tsql ssms-2016

过去曾发布过类似的问题,但是我的工作环境非常有限。提供的解决方案涉及使用创建过程,创建表等。此处没有可用的解决方案。如何仅对字符串中不连续的数字(0-9)下标,例如'09text10more text!@@#11',以返回091011?是否可以使用功能组合,例如来自Schema.Table的SELECT Funtion1(Function2(StringField))?数据类型为varchar(30)。谢谢。

---更新1 ---

很抱歉,我是SQL和Stack Overflow的新手,但我的问题尚未完成。要回答您的一些问题:

-RDBMS和版本: Microsoft SQL Server管理Studio 13.0.16106.4 Microsoft Analysis Services客户端工具13.0.1700.441 Microsoft数据访问组件(MDAC)10.0.16299.15 Microsoft MSXML 3.0 4.0 6.0

-是的,我需要能够在单个查询的上下文中执行此操作。

我将尝试建议的单独解决方案,并做出相应答复。

谢谢大家。

---更新2 ---

Damien,SELECT @@ version返回Microsoft SQL Server 2016(SP2-CU1)(KB4135048)-13.0.5149.0(X64)2018年5月19日09:41:57版权所有(c)Microsoft Corporation Enterprise Edition:基于核心的许可Windows Server 2012 R2 Standard 6.3(内部版本9600:)(管理程序)上安装(64位)

谢谢。

2 个答案:

答案 0 :(得分:0)

这有点hack。 :)

在我的测试中,我使用了一个变量,但这将适用于您的字段和普通的SELECT FROM查询...

declare @textval nvarchar(max) = '09text10more text!@@#11'

SELECT 
    CASE WHEN PATINDEX('%[0-9]%', SUBSTRING(@textval,1,1))=1 THEN SUBSTRING(@textval,1,1) ELSE '' END +
    CASE WHEN PATINDEX('%[0-9]%', SUBSTRING(@textval,2,1))=1 THEN SUBSTRING(@textval,2,1) ELSE '' END +
    CASE WHEN PATINDEX('%[0-9]%', SUBSTRING(@textval,3,1))=1 THEN SUBSTRING(@textval,3,1) ELSE '' END +
    CASE WHEN PATINDEX('%[0-9]%', SUBSTRING(@textval,4,1))=1 THEN SUBSTRING(@textval,4,1) ELSE '' END +
    CASE WHEN PATINDEX('%[0-9]%', SUBSTRING(@textval,5,1))=1 THEN SUBSTRING(@textval,5,1) ELSE '' END +
    CASE WHEN PATINDEX('%[0-9]%', SUBSTRING(@textval,6,1))=1 THEN SUBSTRING(@textval,6,1) ELSE '' END +
... 
    CASE WHEN PATINDEX('%[0-9]%', SUBSTRING(@textval,30,1))=1 THEN SUBSTRING(@textval,30,1) ELSE '' END

对于该字段中的每个字符,您基本上都需要一个case语句。

答案 1 :(得分:0)

您应始终声明RDBMS和版本。

SQL Server 2017的有效TSQL,此要求如下。

file: 'data:video/webm;base64,' + buff

对于以前的版本,您可以使用

$scope.uploadVideo = function () {
    $scope.selected.state = $scope.state[3];

    fs.readFile('./videos/example.webm', (err, data) => {
        if(err) alert(err);
        var buff = Buffer.from(data).toString('base64');
        $upload.upload({
            url: "https://api.cloudinary.com/v1_1/" + cloudinary.config().cloud_name + "/upload",
            data: {
                upload_preset: cloudinary.config().upload_preset,
                //tags: 'myphotoalbum',
                //context: 'photo=' + $scope.title,
                file: 'data:video/webm;base64,' + buff
            }
        })
        .progress(function (info) {
            //file.progress = Math.round((e.loaded * 100.0) / info.total);
            //file.status = "Uploading... " + file.progress + "%"
            console.log(info);
        })
        .then(function (res) {
            console.log(res);
        });
    });

};