大写字母前加空格

问题描述 投票:-1回答:1

有谁知道是否可以在字符串中的每个大写字母前添加空格?我有一个SQL查询,其中一列的值保存时没有空格,我需要在连词之间添加空格。

例如,我有 CakeStandsUtensils 并希望分居 Cake Stands Utensils.

尝试google,但不知道我的问题是否正确,但找不到任何答案... :( 如果这个问题以前在这里被问过,真诚地道歉....

使用MS SQL Server 2014

sql ms-access access-vba sql-server-2014
1个回答
1
投票

这当然不是一个我非常自豪的查询,但它可以完成这项工作(假设你只关心英语中的大写字母)。

SELECT 
LTRIM(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
YourCol COLLATE Latin1_General_100_BIN2
,'A',' A')
,'B',' B')
,'C',' C')
,'D',' D')
,'E',' E')
,'F',' F')
,'G',' G')
,'H',' H')
,'I',' I')
,'J',' J')
,'K',' K')
,'L',' L')
,'M',' M')
,'N',' N')
,'O',' O')
,'P',' P')
,'Q',' Q')
,'R',' R')
,'S',' S')
,'T',' T')
,'U',' U')
,'V',' V')
,'W',' W')
,'X',' X')
,'Y',' Y')
,'Z',' Z')
)
FROM YourTable

1
投票

下面假设你从MS Access accdb文件内部打开一个表,或者从外部链接到一个数据库,该数据库被识别为MS Access的一部分。CurrentDb 对象,如果没有,则假设你知道如何连接到你的特定外部数据库或服务器。如果没有,则假定你知道如何连接到你特定的外部数据库或服务器。

'WARNING! This contains no object testing or error checking!

'Connection to open or linked database
Dim db As Dao.Database
Set db = CurrentDb
Dim rs As Dao.Recordset
Set rs = db.OpenRecordset("SELECT * FROM TableName")

'Temporary search and append strings
Dim strField As String
Dim strAppend As String
Dim strUpdate As String

'Begin Record Traversal
rs.MoveFirst
Do While Not rs.EOF
    strField = rs!NoSpacesField
    Debug.Print strField

    'Traverse field characters
    For i = 1 To Len(strField)
        strAppend = Mid(strField, i, 1)

        'Test for capitals and append space. Asc() assumes ascii characters.
        'Use AscW() for Unicode
        If Asc(strAppend) > 64 And Asc(strAppend) < 91 Then
            strAppend = " " & strAppend
        End If
        strUpdate = strUpdate & strAppend
    Next i

    'Trim initial space and update DB field
    strUpdate = LTrim(strUpdate)
    With rs
        .Edit
        !NoSpacesField = strUpdate
        .Update
        Debug.Print !NoSpacesField
    End With
    strUpdate = ""
    rs.MoveNext
Loop
'End Record Traversal

'Cleanup
rs.Close
db.Close
© www.soinside.com 2019 - 2024. All rights reserved.