Как избежать одиночной кавычки в SQL Server?

В Mac OS, очевидно, нет такого языка, как C ++ / CLI. В Windows C ++ / CLI фактически компилируется как управляемый код, запущенный CLR, который запускает собственный код; так как на Mac OS Mono не интегрирована в систему, это скорее наоборот. Ваше приложение является родным и может содержать управляемый код.

Mono предоставляет функции для размещения виртуальной машины CLR внутри процесса. Поскольку классы CLR напрямую не подвержены вашему C-коду, вы сможете вызывать методы объектов с помощью отражённых вызовов.

Существует документация о том, как вставлять Mono в приложение на официальном сайте. Поскольку вы не заинтересованы в запуске .NET-программ непосредственно , вам лучше прочитать раздел «Invoking Methods in CIL Universe» . В Mac OS вы захотите установить связь с картой Mono из папки /Library/Frameworks вместо использования pkg-config.

Это действительно не должно заменять фактическое чтение вышеуказанного документа, но следующее можно увидеть как руководство относительно того, чего ожидать:

#include 
#include 
#include 
#include 

// create an app domain
// http://en.wikipedia.org/wiki/Application_Domain
MonoDomain* domain = mono_jit_init("Domain");

// mandatory Cocoa call to show that Mono and ObjC work together
NSBundle* mainBundle = [NSBundle mainBundle];
NSString* dll = [mainBundle pathForResource:@"your-dll" ofType:@"dll"];

// load the referenced assembly in our domain
MonoAssembly* assembly = mono_domain_assembly_open(domain, [dll UTF8String]);
MonoImage* image = mono_assembly_get_image(assembly);

// find the class we want to wrap and create an uninitialized instance
MonoClass* classHandle = mono_class_from_name(image, "Name.Space", "YourClass");
MonoObject* object = mono_object_new(domain, classHandle);

// this calls the default, argument-less ctor
// for more complex constructors, you need to find the method handle and call it
// (helpful hint: constructors are internally called ".ctor", so the description
// string will look like "Namespace.Class..ctor()")
mono_runtime_object_init(object);

// get a method handle to whatever you like
const char* descAsString = "Your.NameSpace.YourClass:YourMethod()";
MonoMethodDesc* description = mono_method_desc_new(descAsString);
MonoMethod* method = mono_method_desc_search_in_class(description, classHandle);

// call it
void* args[0];
mono_runtime_invoke(method, object, args, NULL);

// when you're done, shutdown the runtime by destroying the app domain
mono_jit_cleanup(domain);

Если вы не найдете это очень привлекательным, вы можете пойти по-другому, как вы упомянули, и посмотреть в MonoMac , который обеспечивает привязки .NET к большой части API, которые вы можете использовать в приложении Mac (Cocoa, CoreImage, CoreAnimation и т. д.) и означает создание ваших собственных привязок.

827
задан DineshDB 26 March 2018 в 10:01
поделиться

5 ответов

Single quotes are escaped by doubling them up, just as you've shown us in your example. The following SQL illustrates this functionality. I tested it on SQL Server 2008:

DECLARE @my_table TABLE (
    [value] VARCHAR(200)
)

INSERT INTO @my_table VALUES ('hi, my name''s tim.')

SELECT * FROM @my_table

Results

value
==================
hi, my name's tim.
1275
ответ дан 22 November 2019 в 21:06
поделиться

Следующий синтаксис выйдет из Вас ТОЛЬКО ОДНА кавычка:

SELECT ''''

результатом будет одинарная кавычка. Могло бы быть очень полезным для создания динамического SQL:). enter image description here

0
ответ дан Popa Alin 4 November 2019 в 06:43
поделиться

Многие из нас знают, что Популярный Метод Выхода из Одинарных кавычек путем Сгибания их легко как ниже.

PRINT 'It''s me, Arul.';

Doubling the Single Quotes Method

мы собираемся считать некоторые другие альтернативные способы выйти из одинарных кавычек.

1. Символы UNICODE

39 являются символом UNICODE Одинарной кавычки. Таким образом, мы можем использовать его как ниже.

PRINT 'Hi,it'+CHAR(39)+'s Arul.';
PRINT 'Helo,it'+NCHAR(39)+'s Arul.';

UNICODE Characters

2. QUOTED_IDENTIFIER

Другое простое и лучшее альтернативное решение должен использовать QUOTED_IDENTIFIER. Когда QUOTED_IDENTIFIER установлен на ПРОЧЬ, строки могут быть включены в двойные кавычки. В этом сценарии мы don’t должен выйти из одинарных кавычек. Так, этот путь был бы очень полезен при использовании партии строковых значений с одинарными кавычками. Это будет очень полезно, в то время как использование такого количества строк ВСТАВЛЯЕТ/ОБНОВЛЯЕТ сценарии где значения столбцов, имеющие одинарные кавычки.

SET QUOTED_IDENTIFIER OFF;
PRINT "It's Arul."
SET QUOTED_IDENTIFIER ON;

QUOTE_IDENTIFIER

ЗАКЛЮЧЕНИЕ

вышеупомянутые методы применимы и к AZURE и В Помещении.

0
ответ дан 22 November 2019 в 21:06
поделиться

The doubling up of the quote should have worked, so it's peculiar that it didn't work for you; however, an alternative is using double quote characters, instead of single ones, around the string. I.e.,

insert into my_table values("hi, my name's tim.");

17
ответ дан 22 November 2019 в 21:06
поделиться

How about:

insert into my_table values('hi, my name'+char(39)+'s tim.')
41
ответ дан 22 November 2019 в 21:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: